OSDN Git Service

2013.10.24
[uclinux-h8/uClinux-dist.git] / lib / bitvector / t / 40__auxiliary.t
1 #!perl -w
2
3 use strict;
4 no strict "vars";
5
6 use Bit::Vector::String;
7
8 my @l = (31,32,33,127,128,129,1023,1024,1025);
9
10 my($b,$i,$n,$r,$s,$t,$u,$v,$w,$x);
11
12 print "1..", @l * 81, "\n";
13
14 $n = 1;
15
16 # -------------------------------------------------------
17
18 foreach $b (@l)
19 {
20     $v = Bit::Vector->new($b);
21     $w = Bit::Vector->new($b);
22
23     for ( $i = 0; $i < 3; $i++ )
24     {
25         if    ($i == 0) { $v->Primes(); }
26         elsif ($i == 1) { $v->Fill(); }
27         else
28         {
29             $v->Empty();
30             for ( $x = 0; $x < $b; $x += 12 ) { $v->Bit_On($x); }
31             if ($v->to_Oct() =~ /^[01]+$/)
32             {print "ok $n\n";} else {print "not ok $n\n";}
33             $n++;
34             if ($v->to_Hex() =~ /^[01]+$/)
35             {print "ok $n\n";} else {print "not ok $n\n";}
36             $n++;
37         }
38
39 # =======================================================
40
41         $x = '$w->from_Oct( $s = $v->to_Oct() );';
42
43         $t = 2;
44         $r = 'OCT';
45         $w->from_Oct( $s = $v->to_Oct() );
46         if ($v->equal($w))
47         {print "ok $n\n";} else {print "not ok $n\n";trace($b,$r,$s,$t,$v,$w,$x);}
48         $n++;
49
50         $x = '$t = $w->String_Import( $s = $v->String_Export( $r ) );';
51
52         $t = $w->String_Import( $s = $v->String_Export( $r = 'bin' ) );
53         if ($v->equal($w))
54         {print "ok $n\n";} else {print "not ok $n\n";trace($b,$r,$s,$t,$v,$w,$x);}
55         $n++;
56
57         $t = $w->String_Import( $s = $v->String_Export( $r = 'oct' ) );
58         if ($v->equal($w))
59         {print "ok $n\n";} else {print "not ok $n\n";trace($b,$r,$s,$t,$v,$w,$x);}
60         $n++;
61
62         $t = $w->String_Import( $s = $v->String_Export( $r = 'hex' ) );
63         if ($v->equal($w))
64         {print "ok $n\n";} else {print "not ok $n\n";trace($b,$r,$s,$t,$v,$w,$x);}
65         $n++;
66
67         $t = $w->String_Import( $s = $v->String_Export( $r = 'dec' ) );
68         if ($v->equal($w))
69         {print "ok $n\n";} else {print "not ok $n\n";trace($b,$r,$s,$t,$v,$w,$x);}
70         $n++;
71
72         $t = $w->String_Import( $s = $v->String_Export( $r = 'enum' ) );
73         if ($v->equal($w))
74         {print "ok $n\n";} else {print "not ok $n\n";trace($b,$r,$s,$t,$v,$w,$x);}
75         $n++;
76
77         $t = $w->String_Import( $s = $v->String_Export( $r = 'pack' ) );
78         if ($v->equal($w))
79         {print "ok $n\n";} else {print "not ok $n\n";trace($b,$r,$s,$t,$v,$w,$x);}
80         $n++;
81
82 # =======================================================
83
84         $x = '$t = $w->String_Import( $s = $v->to_Type() );';
85
86         $r = 'bin';
87         $t = $w->String_Import( $s = $v->to_Bin() );
88         if ($v->equal($w))
89         {print "ok $n\n";} else {print "not ok $n\n";trace($b,$r,$s,$t,$v,$w,$x);}
90         $n++;
91
92         if ($i < 2)
93         {
94             $r = 'oct';
95             $t = $w->String_Import( $s = $v->to_Oct() );
96             if ($v->equal($w))
97             {print "ok $n\n";} else {print "not ok $n\n";trace($b,$r,$s,$t,$v,$w,$x);}
98             $n++;
99
100             $r = 'hex';
101             $t = $w->String_Import( $s = $v->to_Hex() );
102             if ($v->equal($w))
103             {print "ok $n\n";} else {print "not ok $n\n";trace($b,$r,$s,$t,$v,$w,$x);}
104             $n++;
105         }
106
107         $r = 'dec';
108         $t = $w->String_Import( $s = $v->to_Dec() );
109         if ($v->equal($w))
110         {print "ok $n\n";} else {print "not ok $n\n";trace($b,$r,$s,$t,$v,$w,$x);}
111         $n++;
112
113         $r = 'enum';
114         $t = $w->String_Import( $s = $v->to_Enum() );
115         if ($v->equal($w))
116         {print "ok $n\n";} else {print "not ok $n\n";trace($b,$r,$s,$t,$v,$w,$x);}
117         $n++;
118
119         $r = 'pack';
120         $t = $w->String_Import( $s = ':' . $v->Size(). ':' . $v->Block_Read() );
121         if ($v->equal($w))
122         {print "ok $n\n";} else {print "not ok $n\n";trace($b,$r,$s,$t,$v,$w,$x);}
123         $n++;
124
125 # =======================================================
126
127         $x = '$w = Bit::Vector->new_Oct( $b, $s = $v->to_Oct() );';
128
129         $t = 2;
130         $r = 'OCT';
131         $w = Bit::Vector->new_Oct( $b, $s = $v->to_Oct() );
132         if ($v->equal($w))
133         {print "ok $n\n";} else {print "not ok $n\n";trace($b,$r,$s,$t,$v,$w,$x);}
134         $n++;
135
136         $x = '($w,$t) = Bit::Vector->new_String( $b, $s = $v->String_Export( $r ) );';
137
138         ($w,$t) = Bit::Vector->new_String( $b, $s = $v->String_Export( $r = 'bin' ) );
139         if ($v->equal($w))
140         {print "ok $n\n";} else {print "not ok $n\n";trace($b,$r,$s,$t,$v,$w,$x);}
141         $n++;
142
143         ($w,$t) = Bit::Vector->new_String( $b, $s = $v->String_Export( $r = 'oct' ) );
144         if ($v->equal($w))
145         {print "ok $n\n";} else {print "not ok $n\n";trace($b,$r,$s,$t,$v,$w,$x);}
146         $n++;
147
148         ($w,$t) = Bit::Vector->new_String( $b, $s = $v->String_Export( $r = 'hex' ) );
149         if ($v->equal($w))
150         {print "ok $n\n";} else {print "not ok $n\n";trace($b,$r,$s,$t,$v,$w,$x);}
151         $n++;
152
153         ($w,$t) = Bit::Vector->new_String( $b, $s = $v->String_Export( $r = 'dec' ) );
154         if ($v->equal($w))
155         {print "ok $n\n";} else {print "not ok $n\n";trace($b,$r,$s,$t,$v,$w,$x);}
156         $n++;
157
158         ($w,$t) = Bit::Vector->new_String( $b, $s = $v->String_Export( $r = 'enum' ) );
159         if ($v->equal($w))
160         {print "ok $n\n";} else {print "not ok $n\n";trace($b,$r,$s,$t,$v,$w,$x);}
161         $n++;
162
163         ($w,$t) = Bit::Vector->new_String( $b, $s = $v->String_Export( $r = 'pack' ) );
164         if ($v->equal($w))
165         {print "ok $n\n";} else {print "not ok $n\n";trace($b,$r,$s,$t,$v,$w,$x);}
166         $n++;
167
168 # =======================================================
169
170         $x = '$w = Bit::Vector->new_Oct( undef, $s = $v->to_Oct() );';
171
172         $t = 2;
173         $r = 'OCT';
174         $w = Bit::Vector->new_Oct( undef, $s = $v->to_Oct() );
175         $w->Resize($b) if ($w->Size() != $b);
176         if ($v->equal($w))
177         {print "ok $n\n";} else {print "not ok $n\n";trace($b,$r,$s,$t,$v,$w,$x);}
178         $n++;
179
180         $x = '($w,$t) = Bit::Vector->new_String( undef, $s = $v->String_Export( $r ) );';
181
182         ($w,$t) = Bit::Vector->new_String( undef, $s = $v->String_Export( $r = 'bin' ) );
183         $w->Resize($b) if ($w->Size() != $b);
184         if ($v->equal($w))
185         {print "ok $n\n";} else {print "not ok $n\n";trace($b,$r,$s,$t,$v,$w,$x);}
186         $n++;
187
188         ($w,$t) = Bit::Vector->new_String( undef, $s = $v->String_Export( $r = 'oct' ) );
189         $w->Resize($b) if ($w->Size() != $b);
190         if ($v->equal($w))
191         {print "ok $n\n";} else {print "not ok $n\n";trace($b,$r,$s,$t,$v,$w,$x);}
192         $n++;
193
194         ($w,$t) = Bit::Vector->new_String( undef, $s = $v->String_Export( $r = 'hex' ) );
195         $w->Resize($b) if ($w->Size() != $b);
196         if ($v->equal($w))
197         {print "ok $n\n";} else {print "not ok $n\n";trace($b,$r,$s,$t,$v,$w,$x);}
198         $n++;
199
200         ($w,$t) = Bit::Vector->new_String( undef, $s = $v->String_Export( $r = 'dec' ) );
201         if ($w->Size() != $b)
202         {
203             if ($v->msb and $w->Size() < $b) # needs sign extension when increasing size
204             {
205                 $u = $w;
206                 $w = Bit::Vector->new($b);
207                 $w->Copy($u);
208             }
209             else { $w->Resize($b); }
210         }
211         if ($v->equal($w))
212         {print "ok $n\n";} else {print "not ok $n\n";trace($b,$r,$s,$t,$v,$w,$x);}
213         $n++;
214
215         ($w,$t) = Bit::Vector->new_String( undef, $s = $v->String_Export( $r = 'enum' ) );
216         $w->Resize($b) if ($w->Size() != $b);
217         if ($v->equal($w))
218         {print "ok $n\n";} else {print "not ok $n\n";trace($b,$r,$s,$t,$v,$w,$x);}
219         $n++;
220
221         ($w,$t) = Bit::Vector->new_String( undef, $s = $v->String_Export( $r = 'pack' ) );
222         $w->Resize($b) if ($w->Size() != $b);
223         if ($v->equal($w))
224         {print "ok $n\n";} else {print "not ok $n\n";trace($b,$r,$s,$t,$v,$w,$x);}
225         $n++;
226
227 # =======================================================
228
229     } # for ( $i = 0; $i < 3; $i++ )
230
231 } # foreach $b (@l)
232
233 # -------------------------------------------------------
234
235 sub type
236 {
237     return 'bin'  if ($_[0] == 1);
238     return 'oct'  if ($_[0] == 2);
239     return 'dec'  if ($_[0] == 3);
240     return 'hex'  if ($_[0] == 4);
241     return 'enum' if ($_[0] == 5);
242     return 'pack' if ($_[0] == 6);
243     return undef;
244 }
245
246 sub trace
247 {
248     my($b,$r,$s,$t,$v,$w,$x) = @_;
249
250     warn( "$x\n" );
251     warn( "$r, $b bits\n" );
252     warn( type($t) . ": <$s>\n" );
253     warn( "v = <" . $v->to_Hex() . ">\n" );
254     warn( "w = <" . $w->to_Hex() . ">\n" );
255 }
256
257 __END__
258