8 # ======================================================================
9 # $set->Interval_Empty($lower,$upper);
10 # $set->Interval_Fill($lower,$upper);
11 # $set->Interval_Flip($lower,$upper);
12 # $set->Interval_Reverse($lower,$upper);
13 # ($min,$max) = $set->Interval_Scan_inc($start);
14 # ($min,$max) = $set->Interval_Scan_dec($start);
15 # ======================================================================
23 $set = new Bit::Vector($lim);
24 $rev = new Bit::Vector($lim);
27 $primes = $rev->Norm();
29 if ($rev->equal($vec))
30 {print "ok $n\n";} else {print "not ok $n\n";}
33 if ($set->Norm() == 0)
34 {print "ok $n\n";} else {print "not ok $n\n";}
36 if ($set->Min() > $lim)
37 {print "ok $n\n";} else {print "not ok $n\n";}
39 if ($set->Max() < -$lim)
40 {print "ok $n\n";} else {print "not ok $n\n";}
45 if ($set->Norm() == $lim)
46 {print "ok $n\n";} else {print "not ok $n\n";}
49 {print "ok $n\n";} else {print "not ok $n\n";}
51 if ($set->Max() == $lim-1)
52 {print "ok $n\n";} else {print "not ok $n\n";}
57 if ($set->Norm() == 0)
58 {print "ok $n\n";} else {print "not ok $n\n";}
60 if ($set->Min() > $lim)
61 {print "ok $n\n";} else {print "not ok $n\n";}
63 if ($set->Max() < -$lim)
64 {print "ok $n\n";} else {print "not ok $n\n";}
67 $set->Complement($set);
69 if ($set->Norm() == $lim)
70 {print "ok $n\n";} else {print "not ok $n\n";}
73 {print "ok $n\n";} else {print "not ok $n\n";}
75 if ($set->Max() == $lim-1)
76 {print "ok $n\n";} else {print "not ok $n\n";}
81 if ($set->Norm() == 0)
82 {print "ok $n\n";} else {print "not ok $n\n";}
84 if ($set->Min() > $lim)
85 {print "ok $n\n";} else {print "not ok $n\n";}
87 if ($set->Max() < -$lim)
88 {print "ok $n\n";} else {print "not ok $n\n";}
91 test_set_clr(1,14); test_flip(1,14); test_rev(1,14);
92 test_set_clr(1,30); test_flip(1,30); test_rev(1,30);
93 test_set_clr(1,62); test_flip(1,62); test_rev(1,62);
94 test_set_clr(1,126); test_flip(1,126); test_rev(1,126);
95 test_set_clr(1,254); test_flip(1,254); test_rev(1,254);
96 test_set_clr(1,$lim-2); test_flip(1,$lim-2); test_rev(1,$lim-2);
98 test_set_clr(0,14); test_flip(0,14); test_rev(0,14);
99 test_set_clr(0,30); test_flip(0,30); test_rev(0,30);
100 test_set_clr(0,62); test_flip(0,62); test_rev(0,62);
101 test_set_clr(0,126); test_flip(0,126); test_rev(0,126);
102 test_set_clr(0,254); test_flip(0,254); test_rev(0,254);
103 test_set_clr(0,$lim-2); test_flip(0,$lim-2); test_rev(0,$lim-2);
105 test_set_clr(1,15); test_flip(1,15); test_rev(1,15);
106 test_set_clr(1,31); test_flip(1,31); test_rev(1,31);
107 test_set_clr(1,63); test_flip(1,63); test_rev(1,63);
108 test_set_clr(1,127); test_flip(1,127); test_rev(1,127);
109 test_set_clr(1,255); test_flip(1,255); test_rev(1,255);
110 test_set_clr(1,$lim-1); test_flip(1,$lim-1); test_rev(1,$lim-1);
112 test_set_clr(0,15); test_flip(0,15); test_rev(0,15);
113 test_set_clr(0,31); test_flip(0,31); test_rev(0,31);
114 test_set_clr(0,63); test_flip(0,63); test_rev(0,63);
115 test_set_clr(0,127); test_flip(0,127); test_rev(0,127);
116 test_set_clr(0,255); test_flip(0,255); test_rev(0,255);
117 test_set_clr(0,$lim-1); test_flip(0,$lim-1); test_rev(0,$lim-1);
119 for ( $i = 0; $i < 256; $i++ )
121 test_set_clr($i,$i); test_flip($i,$i);
124 eval { $set->Interval_Empty(-1,$lim-1); };
125 if ($@ =~ /[^:]+::[^:]+::Interval_Empty\(\): minimum index out of range/)
126 {print "ok $n\n";} else {print "not ok $n\n";}
129 eval { $set->Interval_Fill(-1,$lim-1); };
130 if ($@ =~ /[^:]+::[^:]+::Interval_Fill\(\): minimum index out of range/)
131 {print "ok $n\n";} else {print "not ok $n\n";}
134 eval { $set->Interval_Flip(-1,$lim-1); };
135 if ($@ =~ /[^:]+::[^:]+::Interval_Flip\(\): minimum index out of range/)
136 {print "ok $n\n";} else {print "not ok $n\n";}
139 eval { $set->Interval_Reverse(-1,$lim-1); };
140 if ($@ =~ /[^:]+::[^:]+::Interval_Reverse\(\): minimum index out of range/)
141 {print "ok $n\n";} else {print "not ok $n\n";}
144 eval { $set->Interval_Empty(0,-1); };
145 if ($@ =~ /[^:]+::[^:]+::Interval_Empty\(\): maximum index out of range/)
146 {print "ok $n\n";} else {print "not ok $n\n";}
149 eval { $set->Interval_Fill(0,-1); };
150 if ($@ =~ /[^:]+::[^:]+::Interval_Fill\(\): maximum index out of range/)
151 {print "ok $n\n";} else {print "not ok $n\n";}
154 eval { $set->Interval_Flip(0,-1); };
155 if ($@ =~ /[^:]+::[^:]+::Interval_Flip\(\): maximum index out of range/)
156 {print "ok $n\n";} else {print "not ok $n\n";}
159 eval { $set->Interval_Reverse(0,-1); };
160 if ($@ =~ /[^:]+::[^:]+::Interval_Reverse\(\): maximum index out of range/)
161 {print "ok $n\n";} else {print "not ok $n\n";}
164 eval { $set->Interval_Empty(1,0); };
165 if ($@ =~ /[^:]+::[^:]+::Interval_Empty\(\): minimum > maximum index/)
166 {print "ok $n\n";} else {print "not ok $n\n";}
169 eval { $set->Interval_Fill(1,0); };
170 if ($@ =~ /[^:]+::[^:]+::Interval_Fill\(\): minimum > maximum index/)
171 {print "ok $n\n";} else {print "not ok $n\n";}
174 eval { $set->Interval_Flip(1,0); };
175 if ($@ =~ /[^:]+::[^:]+::Interval_Flip\(\): minimum > maximum index/)
176 {print "ok $n\n";} else {print "not ok $n\n";}
179 eval { $set->Interval_Reverse(1,0); };
180 if ($@ =~ /[^:]+::[^:]+::Interval_Reverse\(\): minimum > maximum index/)
181 {print "ok $n\n";} else {print "not ok $n\n";}
184 eval { ($min,$max) = $set->Interval_Scan_inc($lim); };
185 if ($@ =~ /[^:]+::[^:]+::Interval_Scan_inc\(\): start index out of range/)
186 {print "ok $n\n";} else {print "not ok $n\n";}
189 eval { ($min,$max) = $set->Interval_Scan_inc(-1); };
190 if ($@ =~ /[^:]+::[^:]+::Interval_Scan_inc\(\): start index out of range/)
191 {print "ok $n\n";} else {print "not ok $n\n";}
194 eval { ($min,$max) = $set->Interval_Scan_dec($lim); };
195 if ($@ =~ /[^:]+::[^:]+::Interval_Scan_dec\(\): start index out of range/)
196 {print "ok $n\n";} else {print "not ok $n\n";}
199 eval { ($min,$max) = $set->Interval_Scan_dec(-1); };
200 if ($@ =~ /[^:]+::[^:]+::Interval_Scan_dec\(\): start index out of range/)
201 {print "ok $n\n";} else {print "not ok $n\n";}
208 my($lower,$upper) = @_;
209 my($span) = $upper - $lower + 1;
211 $set->Interval_Fill($lower,$upper);
212 if ($set->Norm() == $span)
213 {print "ok $n\n";} else {print "not ok $n\n";}
215 if (($min,$max) = $set->Interval_Scan_inc(0))
216 {print "ok $n\n";} else {print "not ok $n\n";
217 $min = $set->Min(); $max = $set->Max(); }
220 {print "ok $n\n";} else {print "not ok $n\n";}
223 {print "ok $n\n";} else {print "not ok $n\n";}
226 $set->Interval_Empty($lower,$upper);
227 if ($set->Norm() == 0)
228 {print "ok $n\n";} else {print "not ok $n\n";}
230 if ($set->Min() > $lim)
231 {print "ok $n\n";} else {print "not ok $n\n";}
233 if ($set->Max() < -$lim)
234 {print "ok $n\n";} else {print "not ok $n\n";}
240 my($lower,$upper) = @_;
241 my($span) = $upper - $lower + 1;
243 $set->Interval_Flip($lower,$upper);
244 if ($set->Norm() == $span)
245 {print "ok $n\n";} else {print "not ok $n\n";}
247 if (($min,$max) = $set->Interval_Scan_dec($set->Size()-1))
248 {print "ok $n\n";} else {print "not ok $n\n";
249 $min = $set->Min(); $max = $set->Max(); }
252 {print "ok $n\n";} else {print "not ok $n\n";}
255 {print "ok $n\n";} else {print "not ok $n\n";}
258 $set->Interval_Flip($lower,$upper);
259 if ($set->Norm() == 0)
260 {print "ok $n\n";} else {print "not ok $n\n";}
262 if ($set->Min() > $lim)
263 {print "ok $n\n";} else {print "not ok $n\n";}
265 if ($set->Max() < -$lim)
266 {print "ok $n\n";} else {print "not ok $n\n";}
272 my($lower,$upper) = @_;
274 $rev->Interval_Reverse($lower,$upper);
275 if ($rev->Norm() == $primes)
276 {print "ok $n\n";} else {print "not ok $n\n";}
278 unless ($rev->equal($vec))
279 {print "ok $n\n";} else {print "not ok $n\n";}
281 $rev->Interval_Reverse($lower,$upper);
282 if ($rev->equal($vec))
283 {print "ok $n\n";} else {print "not ok $n\n";}