1 package Test::ANTLR::Runtime::BitSet; 2 3 use Test::More; 4 5 use Moose; 6 7 BEGIN { extends 'My::Test::Class' } 8 9 sub constructor : Tests(3) { 10 my ($self) = @_; 11 my $class = $self->class; 12 13 can_ok $class, 'new'; 14 ok my $bs = $class->new(); 15 isa_ok $bs, $class; 16 } 17 18 sub constructor_bits : Tests(5) { 19 my ($self) = @_; 20 my $bs = $self->class->new({ bits => '001' }); 21 ok !$bs->member(0); 22 ok !$bs->member(1); 23 ok $bs->member(2); 24 ok !$bs->member(3); 25 is "$bs", '{2}'; 26 } 27 28 sub constructor_number : Tests(2) { 29 my ($self) = @_; 30 my $bs = $self->class->new({ number => 0x10 }); 31 ok $bs->member(4); 32 is "$bs", '{4}'; 33 } 34 35 sub constructor_words64 : Tests(2) { 36 my ($self) = @_; 37 my $bs = $self->class->new( 38 { words64 => [ '0x0000004000000001', '0x1000000000800000' ] }); 39 is "$bs", '{0,38,87,124}'; 40 } 41 42 sub of : Tests(2) { 43 my ($self) = @_; 44 my $bs = $self->class->of(0x10); 45 ok $bs->member(16) ; 46 is "$bs", '{16}' ; 47 } 48 49 sub operator_to_string : Tests(1) { 50 my ($self) = @_; 51 my $bs = $self->class->new(); 52 is "$bs", '{}'; 53 } 54 55 sub add : Tests(1) { 56 my ($self) = @_; 57 my $bs = $self->class->new(); 58 $bs->add(2); 59 $bs->add(7); 60 is "$bs", '{2,7}'; 61 } 62 63 sub remove : Tests(2) { 64 my ($self) = @_; 65 my $bs = $self->class->new(); 66 $bs->add(3); 67 $bs->add(12); 68 is "$bs", '{3,12}'; 69 $bs->remove(3); 70 is "$bs", '{12}'; 71 } 72 73 sub operator_or : Tests(1) { 74 my ($self) = @_; 75 my $bs = $self->class->of(4); 76 $bs |= $self->class->of(5); 77 is "$bs", '{4,5}'; 78 } 79 80 no Moose; 81 __PACKAGE__->meta->make_immutable(inline_constructor => 0); 82 1; 83