1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverpackage Test::ANTLR::Runtime::BitSet;
2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruveruse Test::More;
4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruveruse Moose;
6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
7324c4644fee44b9898524c09511bd33c3f12e2dfBen GruverBEGIN { extends 'My::Test::Class' }
8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruversub constructor : Tests(3) {
10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    my ($self) = @_;
11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    my $class = $self->class;
12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    can_ok $class, 'new';
14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    ok my $bs = $class->new();
15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    isa_ok $bs, $class;
16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}
17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruversub constructor_bits : Tests(5) {
19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    my ($self) = @_;
20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    my $bs = $self->class->new({ bits => '001' });
21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    ok !$bs->member(0);
22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    ok !$bs->member(1);
23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    ok $bs->member(2);
24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    ok !$bs->member(3);
25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    is "$bs", '{2}';
26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}
27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruversub constructor_number : Tests(2) {
29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    my ($self) = @_;
30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    my $bs = $self->class->new({ number => 0x10 });
31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    ok $bs->member(4);
32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    is "$bs", '{4}';
33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}
34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruversub constructor_words64 : Tests(2) {
36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    my ($self) = @_;
37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    my $bs = $self->class->new(
38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        { words64 => [ '0x0000004000000001', '0x1000000000800000' ] });
39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    is "$bs", '{0,38,87,124}';
40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}
41324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
42324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruversub of : Tests(2) {
43324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    my ($self) = @_;
44324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    my $bs = $self->class->of(0x10);
45324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    ok $bs->member(16) ;
46324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    is "$bs", '{16}' ;
47324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}
48324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
49324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruversub operator_to_string : Tests(1) {
50324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    my ($self) = @_;
51324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    my $bs = $self->class->new();
52324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    is "$bs", '{}';
53324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}
54324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
55324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruversub add : Tests(1) {
56324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    my ($self) = @_;
57324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    my $bs = $self->class->new();
58324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    $bs->add(2);
59324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    $bs->add(7);
60324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    is "$bs", '{2,7}';
61324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}
62324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
63324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruversub remove : Tests(2) {
64324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    my ($self) = @_;
65324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    my $bs = $self->class->new();
66324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    $bs->add(3);
67324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    $bs->add(12);
68324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    is "$bs", '{3,12}';
69324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    $bs->remove(3);
70324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    is "$bs", '{12}';
71324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}
72324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
73324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruversub operator_or : Tests(1) {
74324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    my ($self) = @_;
75324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    my $bs = $self->class->of(4);
76324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    $bs |= $self->class->of(5);
77324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    is "$bs", '{4,5}';
78324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}
79324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
80324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverno Moose;
81324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver__PACKAGE__->meta->make_immutable(inline_constructor => 0);
82324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver1;
83