#!/usr/local/bin/perl -sw
print "1..42\n";
use Quantum::Superpositions
UNARY => ['CORE::int'];
print "ok 1\n";
my $test = 2;
sub TEST
{
my ($got, $expected, $true) = (@_,0);
unless ("$got" eq "$expected") {
print "\tline ", (caller)[2], "\n";
print "\texpected: ";
print $expected;
print "\n";
print "\tbut got: ";
print $got;
print "\n";
print "not ";
}
print "ok ", $test++, "\n";
unless (($got?1:0) == ($true?1:0)) {
print "\tline ", (caller)[2], "\n";
print "\texpected: ";
print $true ? "true" : "false";
print "\n";
print "\tbut got: ";
print $got ? "true" : "false";
print "\n";
print "not ";
}
print "ok ", $test++, "\n";
}
TEST all(1,2,3) != all(4,5,6), all(1,2,3), "true";
TEST all(1,2,3) < any(1,2,3), all();
TEST any(1,2,3) > all(1,2,3), any();
TEST all(1,2,3) < any(1,2,3,4), all(1,2,3), "true";
TEST any(1,2,3,4) > all(1,2,3), any(4), "true";
TEST all(1,2,3) != all(4,5,6), all(1,2,3), "true";
TEST all(1,2,3) < any(1,2,3), all();
TEST any(1,2,3) > all(1,2,3), any();
TEST all(2,3,4) > any(1,2,3), all(2,3,4), "true";
TEST any(1,2,3) < all(2,3,4), any(1), "true";
TEST all(2,3,4) > any(1,2,3,4), all(2,3,4), "true";
TEST all(1,2,3,4)*all(2,3,4) < any(10,11,12), all();
TEST all(1,2,3)*any(1,2,3), all(any(1,2,3),any(2,4,6),any(3,6,9));
sub factors {
eigenstates (int($_[0] / any(2..$_[0]-1)) == ($_[0] / any(2..$_[0]-1)));
}
my $val = 60;
my @factors = factors($val);
foreach (@factors) {
print "not " and last unless 60%$_ == 0
}
print "ok ", $test++, "\n";
use Quantum::Superpositions BINARY => ["CORE::index"];
TEST index(any("opts","tops","spot"),"o"), any(0,1,2), "true";
TEST index("stop",any("p","s")), any(0,3), "true";
TEST index(any("opts","tops","spot","stop"),any("o","p")), any(0,1,2,3), "true";
sub odder {
grep($_%2, split "", $_[0]) > grep($_%2, split "", $_[1]);
}
use Quantum::Superpositions BINARY_LOGICAL => ['main::odder'];
TEST odder(any(1234,2468), 666), any(1234), "true";
TEST odder(any(1234,2468), 666), 1234, "true";
if ($] >= 5.006) {
TEST any(sub{1 . shift()}, sub{pop() . 2})->("a", "z"), any("1a","z2"), "true";
TEST all(sub{1 . shift()}, sub{pop() . 2})->("z", "a"), all("1z","a2");
}
else {
TEST 1,1,1 for (1..2);
}