4 @INC = ("../lib", "lib/compress");
8 use lib qw(t t/compress);
17 # use Test::NoWarnings, if available
20 if eval { require Test::NoWarnings ; import Test::NoWarnings; 1 };
22 plan tests => 78 + $extra ;
24 use_ok('Scalar::Util');
25 use_ok('IO::Compress::Base::Common');
29 ok gotScalarUtilXS(), "Got XS Version of Scalar::Util"
31 You don't have the XS version of Scalar::Util
34 # Compress::Zlib::Common;
36 sub My::testParseParameters()
38 eval { ParseParameters(1, {}, 1) ; };
39 like $@, mkErr(': Expected even number of parameters, got 1'),
40 "Trap odd number of params";
42 eval { ParseParameters(1, {}, undef) ; };
43 like $@, mkErr(': Expected even number of parameters, got 1'),
44 "Trap odd number of params";
46 eval { ParseParameters(1, {}, []) ; };
47 like $@, mkErr(': Expected even number of parameters, got 1'),
48 "Trap odd number of params";
50 eval { ParseParameters(1, {'Fred' => [1, 1, Parse_boolean, 0]}, Fred => 'joe') ; };
51 like $@, mkErr("Parameter 'Fred' must be an int, got 'joe'"),
52 "wanted unsigned, got undef";
54 eval { ParseParameters(1, {'Fred' => [1, 1, Parse_unsigned, 0]}, Fred => undef) ; };
55 like $@, mkErr("Parameter 'Fred' must be an unsigned int, got 'undef'"),
56 "wanted unsigned, got undef";
58 eval { ParseParameters(1, {'Fred' => [1, 1, Parse_signed, 0]}, Fred => undef) ; };
59 like $@, mkErr("Parameter 'Fred' must be a signed int, got 'undef'"),
60 "wanted signed, got undef";
62 eval { ParseParameters(1, {'Fred' => [1, 1, Parse_signed, 0]}, Fred => 'abc') ; };
63 like $@, mkErr("Parameter 'Fred' must be a signed int, got 'abc'"),
64 "wanted signed, got 'abc'";
71 skip 'readonly + threads', 1
72 if $Config{useithreads};
74 eval { ParseParameters(1, {'Fred' => [1, 1, Parse_writable_scalar, 0]}, Fred => 'abc') ; };
75 like $@, mkErr("Parameter 'Fred' not writable"),
76 "wanted writable, got readonly";
80 eval { ParseParameters(1, {'Fred' => [1, 1, Parse_writable_scalar, 0]}, Fred => \@xx) ; };
81 like $@, mkErr("Parameter 'Fred' not a scalar reference"),
82 "wanted scalar reference";
85 eval { ParseParameters(1, {'Fred' => [1, 1, Parse_writable_scalar, 0]}, Fred => *ABC) ; };
86 like $@, mkErr("Parameter 'Fred' not a scalar"),
89 #eval { ParseParameters(1, {'Fred' => [1, 1, Parse_any|Parse_multiple, 0]}, Fred => 1, Fred => 2) ; };
90 #like $@, mkErr("Muliple instances of 'Fred' found"),
95 my $got = ParseParameters(1, {'Fred' => [1, 1, 0x1000000, 0]}, Fred => 'abc') ;
96 is $got->value('Fred'), "abc", "other" ;
98 $got = ParseParameters(1, {'Fred' => [0, 1, Parse_any, undef]}, Fred =>
100 ok $got->parsed('Fred'), "undef" ;
101 ok ! defined $got->value('Fred'), "undef" ;
103 $got = ParseParameters(1, {'Fred' => [0, 1, Parse_string, undef]}, Fred =>
105 ok $got->parsed('Fred'), "undef" ;
106 is $got->value('Fred'), "", "empty string" ;
109 $got = ParseParameters(1, {'Fred' => [1, 1, Parse_writable_scalar, undef]}, Fred => $xx) ;
111 ok $got->parsed('Fred'), "parsed" ;
112 my $xx_ref = $got->value('Fred');
116 $got = ParseParameters(1, {'Fred' => [1, 1, Parse_writable_scalar, undef]}, Fred => \$xx) ;
118 ok $got->parsed('Fred'), "parsed" ;
119 $xx_ref = $got->value('Fred');
123 # my $got1 = ParseParameters(1, {'Fred' => [1, 1, Parse_writable_scalar, undef]}, $got) ;
124 # ok $got->parsed('Fred'), "parsed" ;
125 # $xx_ref = $got->value('Fred');
130 My::testParseParameters();
134 title "isaFilename" ;
135 ok isaFilename("abc"), "'abc' isaFilename";
137 ok ! isaFilename(undef), "undef ! isaFilename";
138 ok ! isaFilename([]), "[] ! isaFilename";
139 $main::X = 1; $main::X = $main::X ;
140 ok ! isaFilename(*X), "glob ! isaFilename";
144 title "whatIsInput" ;
146 my $lex = new LexFile my $out_file ;
147 open FH, ">$out_file" ;
148 is whatIsInput(*FH), 'handle', "Match filehandle" ;
152 is whatIsInput($stdin), 'handle', "Match '-' as stdin";
153 #is $stdin, \*STDIN, "'-' changed to *STDIN";
154 #isa_ok $stdin, 'IO::File', "'-' changed to IO::File";
155 is whatIsInput("abc"), 'filename', "Match filename";
156 is whatIsInput(\"abc"), 'buffer', "Match buffer";
157 is whatIsInput(sub { 1 }, 1), 'code', "Match code";
158 is whatIsInput(sub { 1 }), '' , "Don't match code";
163 title "whatIsOutput" ;
165 my $lex = new LexFile my $out_file ;
166 open FH, ">$out_file" ;
167 is whatIsOutput(*FH), 'handle', "Match filehandle" ;
171 is whatIsOutput($stdout), 'handle', "Match '-' as stdout";
172 #is $stdout, \*STDOUT, "'-' changed to *STDOUT";
173 #isa_ok $stdout, 'IO::File', "'-' changed to IO::File";
174 is whatIsOutput("abc"), 'filename', "Match filename";
175 is whatIsOutput(\"abc"), 'buffer', "Match buffer";
176 is whatIsOutput(sub { 1 }, 1), 'code', "Match code";
177 is whatIsOutput(sub { 1 }), '' , "Don't match code";
187 is $x->getHigh, 0, " getHigh is 0";
188 is $x->getLow, 0, " getLow is 0";
192 is $x->getHigh, 1, " getHigh is 1";
193 is $x->getLow, 2, " getLow is 2";
195 $x = new U64(0xFFFFFFFF,2);
196 is $x->getHigh, 0xFFFFFFFF, " getHigh is 0xFFFFFFFF";
197 is $x->getLow, 2, " getLow is 2";
199 $x = new U64(7, 0xFFFFFFFF);
200 is $x->getHigh, 7, " getHigh is 7";
201 is $x->getLow, 0xFFFFFFFF, " getLow is 0xFFFFFFFF";
204 is $x->getHigh, 0, " getHigh is 0";
205 is $x->getLow, 666, " getLow is 666";
210 is $x->getHigh, 0, " getHigh is 0";
211 is $x->getLow, 1, " getLow is 1";
214 is $x->getHigh, 0, " getHigh is 0";
215 is $x->getLow, 2, " getLow is 2";
217 $x = new U64(0, 0xFFFFFFFE);
218 is $x->getHigh, 0, " getHigh is 0";
219 is $x->getLow, 0xFFFFFFFE, " getLow is 0xFFFFFFFE";
222 is $x->getHigh, 0, " getHigh is 0";
223 is $x->getLow, 0xFFFFFFFF, " getLow is 0xFFFFFFFF";
226 is $x->getHigh, 1, " getHigh is 1";
227 is $x->getLow, 0, " getLow is 0";
230 is $x->getHigh, 1, " getHigh is 1";
231 is $x->getLow, 1, " getLow is 1";
233 $x = new U64(1, 0xFFFFFFFE);
234 my $y = new U64(2, 3);
237 is $x->getHigh, 4, " getHigh is 4";
238 is $x->getLow, 1, " getLow is 1";
240 title "U64 - equal" ;
243 is $x->getHigh, 0, " getHigh is 0";
244 is $x->getLow, 1, " getLow is 1";
247 is $x->getHigh, 0, " getHigh is 0";
248 is $x->getLow, 1, " getLow is 1";
250 my $z = new U64(0, 2);
251 is $x->getHigh, 0, " getHigh is 0";
252 is $x->getLow, 1, " getLow is 1";
254 ok $x->equal($y), " equal";
255 ok !$x->equal($z), " ! equal";
257 title "U64 - pack_V" ;