@@ -22,7 +22,7 @@ def compare_to_reference_set(nums, set, seqset)
22
22
assert seqset . cover? sorted . sample 100
23
23
end
24
24
25
- test "compared to reference Set, add many random values " do
25
+ test "fuzz test: add numbers and compare to reference Set " do
26
26
set = Set . new
27
27
seqset = SequenceSet . new
28
28
10 . times do
@@ -31,7 +31,7 @@ def compare_to_reference_set(nums, set, seqset)
31
31
end
32
32
end
33
33
34
- test "compared to reference Set, add many large ranges " do
34
+ test "fuzz test: add ranges and compare to reference Set " do
35
35
set = Set . new
36
36
seqset = SequenceSet . new
37
37
( 1 ..10_000 ) . each_slice ( 250 ) do
@@ -40,6 +40,80 @@ def compare_to_reference_set(nums, set, seqset)
40
40
end
41
41
end
42
42
43
+ test "fuzz test: set union identities" do
44
+ 10 . times do
45
+ lhs = SequenceSet [ Array . new ( 100 ) { rand ( 1 ..300 ) } ]
46
+ rhs = SequenceSet [ Array . new ( 100 ) { rand ( 1 ..300 ) } ]
47
+ union = lhs | rhs
48
+ assert_equal union , rhs | lhs # commutative
49
+ assert_equal union , ~( ~lhs & ~rhs ) # De Morgan's Law
50
+ assert_equal union , lhs | ( lhs ^ rhs )
51
+ assert_equal union , lhs | ( rhs - lhs )
52
+ assert_equal union , ( lhs & rhs ) ^ ( lhs ^ rhs )
53
+ mutable = lhs . dup
54
+ assert_equal union , mutable . merge ( rhs )
55
+ assert_equal union , mutable
56
+ end
57
+ end
58
+
59
+ test "fuzz test: set intersection identities" do
60
+ 10 . times do
61
+ lhs = SequenceSet [ Array . new ( 100 ) { rand ( 1 ..300 ) } ]
62
+ rhs = SequenceSet [ Array . new ( 100 ) { rand ( 1 ..300 ) } ]
63
+ intersection = lhs & rhs
64
+ assert_equal intersection , rhs & lhs # commutative
65
+ assert_equal intersection , ~( ~lhs | ~rhs ) # De Morgan's Law
66
+ assert_equal intersection , lhs - ~rhs
67
+ assert_equal intersection , lhs - ( lhs - rhs )
68
+ assert_equal intersection , lhs - ( lhs ^ rhs )
69
+ assert_equal intersection , lhs ^ ( lhs - rhs )
70
+ end
71
+ end
72
+
73
+ test "fuzz test: set subtraction identities" do
74
+ 10 . times do
75
+ lhs = SequenceSet [ Array . new ( 100 ) { rand ( 1 ..300 ) } ]
76
+ rhs = SequenceSet [ Array . new ( 100 ) { rand ( 1 ..300 ) } ]
77
+ difference = lhs - rhs
78
+ assert_equal difference , ~rhs - ~lhs
79
+ assert_equal difference , ~( ~lhs | rhs )
80
+ assert_equal difference , lhs & ( lhs ^ rhs )
81
+ assert_equal difference , lhs ^ ( lhs & rhs )
82
+ assert_equal difference , rhs ^ ( lhs | rhs )
83
+ mutable = lhs . dup
84
+ assert_equal difference , mutable . subtract ( rhs )
85
+ assert_equal difference , mutable
86
+ end
87
+ end
88
+
89
+ test "fuzz test: set xor identities" do
90
+ 10 . times do
91
+ lhs = SequenceSet [ Array . new ( 100 ) { rand ( 1 ..300 ) } ]
92
+ rhs = SequenceSet [ Array . new ( 100 ) { rand ( 1 ..300 ) } ]
93
+ mid = SequenceSet [ Array . new ( 100 ) { rand ( 1 ..300 ) } ]
94
+ xor = lhs ^ rhs
95
+ assert_equal xor , rhs ^ lhs # commutative
96
+ assert_equal xor , ( lhs | rhs ) - ( lhs & rhs )
97
+ assert_equal xor , ( lhs ^ mid ) ^ ( mid ^ rhs )
98
+ assert_equal xor , ~lhs ^ ~rhs
99
+ end
100
+ end
101
+
102
+ test "fuzz test: set complement identities" do
103
+ 10 . times do
104
+ set = SequenceSet [ Array . new ( 100 ) { rand ( 1 ..300 ) } ]
105
+ complement = ~set
106
+ assert_equal set , ~complement
107
+ assert_equal complement , ~set . dup
108
+ assert_equal complement , SequenceSet . full - set
109
+ mutable = set . dup
110
+ assert_equal complement , mutable . complement!
111
+ assert_equal complement , mutable
112
+ assert_equal set , mutable . complement!
113
+ assert_equal set , mutable
114
+ end
115
+ end
116
+
43
117
test "#== equality by value (not by identity or representation)" do
44
118
assert_equal SequenceSet . new , SequenceSet . new
45
119
assert_equal SequenceSet . new ( "1" ) , SequenceSet [ 1 ]
0 commit comments