Skip to content

Commit

Permalink
Add tests for using Buf type objects and write-num*
Browse files Browse the repository at this point in the history
  • Loading branch information
lizmat committed Oct 4, 2019
1 parent 1848404 commit 47e7341
Showing 1 changed file with 32 additions and 12 deletions.
44 changes: 32 additions & 12 deletions S03-buf/write-num.t
Expand Up @@ -18,27 +18,30 @@ my @values = (
0e0, 1e0, -1e0, 42e0, -42e0
);

plan (@methods / 4) * 2
plan (@methods / 4)
+ @byte-widths * @values * 8
;

# run for all possible methods setting / returning unsigned values
for @methods -> $bytes, $mask, $write, $read {
dies-ok { buf8."$write"(0,42) }, "does buf8 $write 0 42 die";

subtest {
plan 2 + @endians * 2;
plan 3 + @endians * 3;

dies-ok { buf8.new."$write"(-1,42) },
"does $write -1 42 die on uninited";
dies-ok { buf8.new(255)."$write"(-1,42) },
"does $write -1 42 die on inited";
dies-ok { buf8."$write"(-1,42e0) },
"does $write -1 42e0 die on type object";
dies-ok { buf8.new."$write"(-1,42e0) },
"does $write -1 42e0 die on uninited";
dies-ok { buf8.new(255)."$write"(-1,42e0) },
"does $write -1 42e0 die on inited";

for @endians -> $endian {
dies-ok { buf8.new."$write"(-1,42,$endian) },
"does $write -1 42 $endian die on uninited";
dies-ok { buf8.new(255)."$write"(-1,42,$endian) },
"does $write -1 42 $endian die";
dies-ok { buf8."$write"(-1,42e0,$endian) },
"does $write -1 42e0 $endian die on type object";
dies-ok { buf8.new."$write"(-1,42e0,$endian) },
"does $write -1 42e0 $endian die on uninited";
dies-ok { buf8.new(255)."$write"(-1,42e0,$endian) },
"does $write -1 42e0 $endian die";
}
}, "did all possible negative offsets die";

Expand All @@ -53,7 +56,7 @@ for @methods -> $bytes, $mask, $write, $read {
for ^8 -> $offset {

subtest {
plan 3 + @endians * 3 + 3 + @endians * 3;
plan 3 * (3 + @endians * 3);

# tests on existing buf
is-deeply existing."$write"($offset,$value), existing,
Expand All @@ -72,6 +75,23 @@ for @methods -> $bytes, $mask, $write, $read {
"did existing $read $offset $endian give $value";
}

# tests on type object
my $fromtype := buf8."$write"($offset,$value);
ok $fromtype ~~ buf8, 'did we get a buf8?';
is $fromtype.elems, $offset + $bytes,
"did type $write $offset $value set size {$offset + $bytes}";
is $fromtype."$read"($offset), $value,
"did type $read $offset give $value";

for @endians -> $endian {
my $fromtype := buf8."$write"($offset,$value,$endian);
ok $fromtype ~~ buf8, "did we get a buf8 for $endian?";
is $fromtype.elems, $offset + $bytes,
"did new $write $offset $value $endian set size {$offset + $bytes}";
is $fromtype."$read"($offset,$endian), $value,
"did new $read $offset $endian give $value";
}

# tests on new buf
is-deeply (my $buf := buf8.new)."$write"($offset,$value), $buf,
"does new $write $offset $value return \$buf";
Expand Down

0 comments on commit 47e7341

Please sign in to comment.