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

BEGIN { use_ok("Religion::Bible::Reference"); }

{
	my $bibref = bibref("Jn 1:10-11,20-21,23");
	is(
		$bibref->stringify,
		"John 1:10-11, 20-21, 23",
		"Jn 1:10-11,20-21,23 stringification"
	);

  { # iterate scalarly
    my $iterator = $bibref->iterator;

    isa_ok($iterator, 'Religion::Bible::Reference::Iterator', '->iterator');

    my @verses = (10, 11, 20, 21, 23);

    while (my $verse = $iterator->next) {
      is($verse, (shift @verses), "iterator result scalar context");
    }
  }

  { # iterate listwise
    my $iterator = $bibref->iterator;

    isa_ok($iterator, 'Religion::Bible::Reference::Iterator', '->iterator');

    my @verses = (10, 11, 20, 21, 23);

    while (my @verse = $iterator->next) {
      is_deeply(
        \@verse,
        [ 'John', 1, (shift @verses) ],
        "iterator result list context"
      );
    }
  }

	is(
		$bibref->stringify,
		"John 1:10-11, 20-21, 23",
		"Jn 1:10-11,20-21,23 stringification -- unchanged"
	);
}

{
    my $bibref = bibref("Jn 1");
    my $iterator = $bibref->iterator;
    isa_ok($iterator, 'Religion::Bible::Reference::Iterator', '->iterator');

    my $count; $count++ while $iterator->next;
    is($count, 51, "Iterating whole chapters works");
}