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