@@ -825,6 +825,124 @@ Rows: [ 60 differences, showing first 20 ]
825825 --Assert
826826 ut.expect(l_actual_message).to_be_like(l_expected_message);
827827 end;
828+
829+ procedure collection_join_by is
830+ l_actual test_dummy_object_list;
831+ l_expected test_dummy_object_list;
832+ l_actual_message varchar2(32767);
833+ l_expected_message varchar2(32767);
834+ begin
835+ --Arrange
836+ select test_dummy_object( rownum, 'Something '||rownum, rownum)
837+ bulk collect into l_actual
838+ from dual connect by level <=2;
839+ select test_dummy_object( rownum, 'Something '||rownum, rownum)
840+ bulk collect into l_expected
841+ from dual connect by level <=2
842+ order by rownum desc;
843+ --Act
844+ ut3.ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)).join_by('TEST_DUMMY_OBJECT/ID');
845+ ut.expect(expectations.failed_expectations_data()).to_be_empty();
846+ end;
847+
848+ procedure collection_join_by_fail is
849+ l_actual test_dummy_object_list;
850+ l_expected test_dummy_object_list;
851+ l_actual_message varchar2(32767);
852+ l_expected_message varchar2(32767);
853+ begin
854+ --Arrange
855+ select test_dummy_object( rownum, 'Something '||rownum, rownum)
856+ bulk collect into l_actual
857+ from dual connect by level <=2;
858+ select test_dummy_object( rownum * 2, 'Something '||rownum, rownum)
859+ bulk collect into l_expected
860+ from dual connect by level <=2
861+ order by rownum desc;
862+ --Act
863+ ut3.ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)).join_by('TEST_DUMMY_OBJECT/ID');
864+ l_expected_message := q'[%Actual: ut3_tester.test_dummy_object_list [ count = 2 ] was expected to equal: ut3_tester.test_dummy_object_list [ count = 2 ]
865+ %Diff:
866+ %Rows: [ 3 differences ]
867+ %PK <ID>2</ID> - Actual: <name>Something 2</name>
868+ %PK <ID>2</ID> - Actual: <Value>2</Value>
869+ %PK <ID>2</ID> - Expected: <name>Something 1</name>
870+ %PK <ID>2</ID> - Expected: <Value>1</Value>
871+ %PK <ID>1</ID> - Extra: <TEST_DUMMY_OBJECT><ID>1</ID><name>Something 1</name><Value>1</Value></TEST_DUMMY_OBJECT>
872+ %PK <ID>4</ID> - Missing: <TEST_DUMMY_OBJECT><ID>4</ID><name>Something 2</name><Value>2</Value></TEST_DUMMY_OBJECT>]';
873+ l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message;
874+ --Assert
875+ ut.expect(l_actual_message).to_be_like(l_expected_message);
876+ end;
877+
878+ procedure collection_unordered is
879+ l_actual test_dummy_object_list;
880+ l_expected test_dummy_object_list;
881+ l_actual_message varchar2(32767);
882+ l_expected_message varchar2(32767);
883+ begin
884+ --Arrange
885+ select test_dummy_object( rownum, 'Something '||rownum, rownum)
886+ bulk collect into l_actual
887+ from dual connect by level <=3;
888+ select test_dummy_object( rownum, 'Something '||rownum, rownum)
889+ bulk collect into l_expected
890+ from dual connect by level <=3
891+ order by rownum desc;
892+ --Act
893+ ut3.ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)).unordered;
894+ ut.expect(expectations.failed_expectations_data()).to_be_empty();
895+ end;
896+
897+ procedure collection_unordered_fail is
898+ l_actual test_dummy_object_list;
899+ l_expected test_dummy_object_list;
900+ l_actual_message varchar2(32767);
901+ l_expected_message varchar2(32767);
902+ begin
903+ --Arrange
904+ select test_dummy_object( rownum, 'Something '||rownum, rownum)
905+ bulk collect into l_actual
906+ from dual connect by level <=2;
907+ select test_dummy_object( rownum * 2, 'Something '||rownum, rownum)
908+ bulk collect into l_expected
909+ from dual connect by level <=2
910+ order by rownum desc;
911+
912+ l_expected_message := q'[%Actual: ut3_tester.test_dummy_object_list [ count = 2 ] was expected to equal: ut3_tester.test_dummy_object_list [ count = 2 ]
913+ %Diff:
914+ %Rows: [ 4 differences ]
915+ %Extra: <TEST_DUMMY_OBJECT><ID>1</ID><name>Something 1</name><Value>1</Value></TEST_DUMMY_OBJECT>
916+ %Extra: <TEST_DUMMY_OBJECT><ID>2</ID><name>Something 2</name><Value>2</Value></TEST_DUMMY_OBJECT>
917+ %Missing: <TEST_DUMMY_OBJECT><ID>4</ID><name>Something 2</name><Value>2</Value></TEST_DUMMY_OBJECT>
918+ %Missing: <TEST_DUMMY_OBJECT><ID>2</ID><name>Something 1</name><Value>1</Value></TEST_DUMMY_OBJECT>]';
919+
920+ ut3.ut.expect(anydata.convertCollection(l_actual)).to_equal(anydata.convertCollection(l_expected)).unordered;
921+ l_actual_message := ut3.ut_expectation_processor.get_failed_expectations()(1).message;
922+ --Assert
923+ ut.expect(l_actual_message).to_be_like(l_expected_message);
924+ end;
925+
926+ procedure object_join_by is
927+ begin
928+ --Arrange
929+ g_test_expected := anydata.convertObject( test_dummy_object(1, 'A', '0') );
930+ g_test_actual := anydata.convertObject( test_dummy_object(1, 'A', '0') );
931+
932+ --Act
933+ ut3.ut.expect(g_test_actual).to_equal(g_test_expected).join_by('TEST_DUMMY_OBJECT/ID');
934+ ut.expect(expectations.failed_expectations_data()).to_be_empty();
935+ end;
936+
937+ procedure object_unordered is
938+ begin
939+ g_test_expected := anydata.convertObject( test_dummy_object(1, 'A', '0') );
940+ g_test_actual := anydata.convertObject( test_dummy_object(1, 'A', '0') );
941+
942+ --Act
943+ ut3.ut.expect(g_test_actual).to_equal(g_test_expected).unordered;
944+ ut.expect(expectations.failed_expectations_data()).to_be_empty();
945+ end;
828946
829947end;
830948/
0 commit comments