Home | History | Annotate | Download | only in Runtime
      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