6161 Assert(Success(a.Intersection(b), [3, 4]));
6262end;
6363
64- procedure TestPointArray ;
64+ procedure TestBoxArray ;
6565
66- function Success(a,b: TPointArray ): Boolean;
66+ function Success(a,b: TBoxArray ): Boolean;
6767 var i: Int32;
6868 begin
6969 if (Length(a) <> Length(b)) then
@@ -75,22 +75,27 @@ procedure TestPointArray;
7575 end;
7676
7777var
78- a,b: TPointArray ;
78+ a,b: TBoxArray ;
7979begin
80- a := [[1,1],[2,2],[3,3]];
81- b := [[3,3],[2,2],[1,1]];
80+ a := [[1,1,1,1],[2,2,2,2],[3,3,3,3]];
81+ b := [[3,3,3,3],[2,2,2,2],[1,1,1,1]];
82+
8283 Assert(Success(a.Difference(b), []));
8384 Assert(Success(a.SymDifference(b), []));
85+ Assert(Success(a.Intersection(b), [[3,3,3,3],[2,2,2,2],[1,1,1,1]]));
86+
87+ a := [[1,1,1,1],[2,2,2,2],[3,3,3,3]];
88+ b := [[1,1,1,1],[2,2,2,2]];
8489
85- a := [[1,2],[2,3],[3,4]];
86- b := [[1,2],[2,3]];
87- Assert(Success(a.Difference(b), [[3,4]]));
88- Assert(Success(a.SymDifference(b), [[3,4]]));
90+ Assert(Success(a.Difference(b), [[3,3,3,3]]));
91+ Assert(Success(a.SymDifference(b), [[3,3,3,3]]));
92+ Assert(Success(a.Intersection(b), [[1,1,1,1],[2,2,2,2]]));
8993end;
9094
91- procedure TestBoxArray;
9295
93- function Success(a,b: TBoxArray): Boolean;
96+ procedure TestDuplicates;
97+
98+ function Success(a,b: TIntegerArray): Boolean;
9499 var i: Int32;
95100 begin
96101 if (Length(a) <> Length(b)) then
@@ -102,27 +107,22 @@ procedure TestBoxArray;
102107 end;
103108
104109var
105- a,b: TBoxArray ;
110+ a,b: TIntegerArray ;
106111begin
107- a := [[1,1,1,1],[2,2,2,2],[3,3,3,3]];
108- b := [[3,3,3,3],[2,2,2,2],[1,1,1,1]];
109-
110- Assert(Success(a.Difference(b), []));
111- Assert(Success(a.SymDifference(b), []));
112- Assert(Success(a.Intersection(b), [[3,3,3,3],[2,2,2,2],[1,1,1,1]]));
113-
114- a := [[1,1,1,1],[2,2,2,2],[3,3,3,3]];
115- b := [[1,1,1,1],[2,2,2,2]];
116-
117- Assert(Success(a.Difference(b), [[3,3,3,3]]));
118- Assert(Success(a.SymDifference(b), [[3,3,3,3]]));
119- Assert(Success(a.Intersection(b), [[1,1,1,1],[2,2,2,2]]));
112+ a := [1,2,2,3];
113+ b := [2,2,3,3,4];
114+ Assert(Success(a.Intersection(b), [2,3]), 'intersection dups');
115+ Assert(Success(a.Difference(b), [1]), 'difference dups');
116+ Assert(Success(a.SymDifference(b), [1,4]), 'symdifference dups');
117+
118+ Assert(Success(TIntegerArray([1]).Intersection([1,1,1]), [1]), 'intersection overflow');
119+ Assert(Success(TIntegerArray([5,5]).Intersection([5,5,5,5]), [5]), 'intersection overflow 2');
120120end;
121121
122122
123123begin
124124 TestIntegerArray();
125125 TestInt64Array();
126- TestPointArray();
127126 TestBoxArray();
127+ TestDuplicates();
128128end;
0 commit comments