The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use Test::More qw(no_plan);

use Games::Nonogram::Line;

my $line = Games::Nonogram::Line->new( size => 4 );

# default is all clear

ok $line->as_string eq '____';

# bit on

$line->on(1);

ok $line->as_string eq 'X___';

# bit off

$line->off(2);

ok $line->as_string eq 'X.__';

# bit on with ->value

$line->value(3 => 1);

ok $line->as_string eq 'X.X_';

# get value

ok $line->value(4) == -1;

# clear bit (to ambiguous state)

$line->clear(3);

ok $line->as_string eq 'X.__';

# clear without arg is all clear

$line->clear;

ok $line->as_string eq '____';

# multiple bits on

$line->on( from => 2, to => 4 );

ok $line->as_string eq '_XXX';

# multiple bits off

$line->off( from => 3, length => 2 );

ok $line->as_string eq '_X..';