Help language development. Donate to The Perl Foundation

Algorithm::Evolutionary::Simple zef:jjmerelo last updated on 2022-03-04

t/01-max-ones.t
#!/usr/bin/env perl6

use v6;

use Test;

use Algorithm::Evolutionary::Simple;

my @length = 32, * * 2  … 1024;

for @length -> $l {
    my @zeros = False xx $l;
    cmp-ok( max-ones( @zeros ), "==", 0, "False-ed chromosome evaluated");
    @zeros = 0 xx $l;
    cmp-ok( max-ones( @zeros ), "==", 0, "0-ed chromosome evaluated");
    my @ones = True xx $l;
    cmp-ok( max-ones( @ones ), "==", $l, "True-ed chromosome evaluated");
    @zeros = 1 xx $l;
    cmp-ok( max-ones( @ones ), "==", $l, "1-ed chromosome evaluated");
    for ^$l {
	my @χ = random-chromosome( $l );
	cmp-ok( @χ, "ne", random-chromosome($l), "Random chromosome size $l");
	
	my $number-ones = reduce { $^b + $^a }, 0, |@χ;
	
	cmp-ok( max-ones( @χ ), "==", $number-ones, "Max ones correct");
    }
}

cmp-ok( max-ones( [0,True,False,1]), "==", 2, "Mixed chromosome tested" );
cmp-ok( max-ones( [3,24,0,i]), "==", 3, "Error chromosome tested" );
done-testing;