blob: d1679e346b68f838802928a637aa04cfb0b60a01 [file] [log] [blame]
package Test::ANTLR::Runtime::BitSet;
use Test::More;
use Moose;
BEGIN { extends 'My::Test::Class' }
sub constructor : Tests(3) {
my ($self) = @_;
my $class = $self->class;
can_ok $class, 'new';
ok my $bs = $class->new();
isa_ok $bs, $class;
}
sub constructor_bits : Tests(5) {
my ($self) = @_;
my $bs = $self->class->new({ bits => '001' });
ok !$bs->member(0);
ok !$bs->member(1);
ok $bs->member(2);
ok !$bs->member(3);
is "$bs", '{2}';
}
sub constructor_number : Tests(2) {
my ($self) = @_;
my $bs = $self->class->new({ number => 0x10 });
ok $bs->member(4);
is "$bs", '{4}';
}
sub constructor_words64 : Tests(2) {
my ($self) = @_;
my $bs = $self->class->new(
{ words64 => [ '0x0000004000000001', '0x1000000000800000' ] });
is "$bs", '{0,38,87,124}';
}
sub of : Tests(2) {
my ($self) = @_;
my $bs = $self->class->of(0x10);
ok $bs->member(16) ;
is "$bs", '{16}' ;
}
sub operator_to_string : Tests(1) {
my ($self) = @_;
my $bs = $self->class->new();
is "$bs", '{}';
}
sub add : Tests(1) {
my ($self) = @_;
my $bs = $self->class->new();
$bs->add(2);
$bs->add(7);
is "$bs", '{2,7}';
}
sub remove : Tests(2) {
my ($self) = @_;
my $bs = $self->class->new();
$bs->add(3);
$bs->add(12);
is "$bs", '{3,12}';
$bs->remove(3);
is "$bs", '{12}';
}
sub operator_or : Tests(1) {
my ($self) = @_;
my $bs = $self->class->of(4);
$bs |= $self->class->of(5);
is "$bs", '{4,5}';
}
no Moose;
__PACKAGE__->meta->make_immutable(inline_constructor => 0);
1;