#/bin/perl -w
# Copyright (c) 2001 Flavio Soibelmann Glock. All rights reserved.
# This program is free software; you can redistribute it and/or
# modify it under the same terms as Perl itself.
#
# Tests for Set::Infinite::Quantize
#
use strict;
# use warnings;
use Set::Infinite;
# $Set::Infinite::TRACE = 1;
my $test = 0;
my ($result, $errors);
sub test {
my ($header, $sub, $expected) = @_;
$test++;
#print "\t# $header \n";
$result = eval $sub;
if ("$expected" eq "$result") {
print "ok $test";
}
else {
print "not ok $test"; # \n\t# expected \"$expected\" got \"$result\"";
print "\n\t# $sub expected \"$expected\" got \"$result\" $@";
$errors++;
}
print " \n";
}
print "1..17\n";
#print "1: \n";
$a = Set::Infinite->new([1,3]);
#print join (" ",@{$a->quantize(quant => 1)}),"\n";
# $a = $a->quantize(quant => 1);
# @a = $a->list;
# exit;
test ( '', ' join (" ", $a->quantize(quant => 1)->list ) ',
"[1..2) [2..3) [3..4)");
#print "25: \n";
$a = Set::Infinite->new([315,434], [530,600]);
#print join (" ",@{$a->quantize(quant => 25)}),"\n";
test ( '', ' join (" ", $a->quantize(quant => 25)->list ) ',
"[300..325) [325..350) [350..375) [375..400) [400..425) [425..450) [525..550) [550..575) [575..600) [600..625)");
my (@a);
#print "25: \n";
@a = Set::Infinite->new([315,434], [530,600])->quantize(quant=>25)->list;
# tie @a, 'Set::Infinite::Quantize', 25, [315,434], [530,600];
#print join (" ",@a),"\n";
print "not " unless join (" ",@a) eq "[300..325) [325..350) [350..375) [375..400) [400..425) [425..450) [525..550) [550..575) [575..600) [600..625)";
print "ok 3\n";
#print "25: \n";
# tie @a, 'Set::Infinite::Quantize', 25, 315,434;
@a = Set::Infinite->new([315,434])->quantize(quant=>25)->list;
#print join (" ",@a),"\n";
print "not " unless join (" ",@a) eq "[300..325) [325..350) [350..375) [375..400) [400..425) [425..450)";
print "ok 4\n";
# tie @a, 'Set::Infinite::Quantize', 25, 300,434;
@a = Set::Infinite->new([300,434])->quantize(quant=>25)->list;
#print join (" ",@a),"\n";
print "not " unless join (" ",@a) eq "[300..325) [325..350) [350..375) [375..400) [400..425) [425..450)";
print "ok 5\n";
# tie @a, 'Set::Infinite::Quantize', 25, 315,450;
@a = Set::Infinite->new([315,450])->quantize(quant=>25)->list;
#print join (" ",@a),"\n";
print "not " unless join (" ",@a) eq "[300..325) [325..350) [350..375) [375..400) [400..425) [425..450) [450..475)";
print "ok 6\n";
# tie @a, 'Set::Infinite::Quantize', 25, 300,450;
@a = Set::Infinite->new([300,450])->quantize(quant=>25)->list;
#print join (" ",@a),"\n";
print "not " unless join (" ",@a) eq "[300..325) [325..350) [350..375) [375..400) [400..425) [425..450) [450..475)";
print "ok 7\n";
# recursive test
$a = Set::Infinite->new([1,3]);
# print "r: ", $a->quantize(quant => 1)->quantize(quant => 1), "\n";
print "not " unless join (" ", $a->quantize(quant => 1)->quantize(quant => 1)->list ) eq
"[1..2) [2..3) [3..4)";
print "ok 8\n";
$test = 8;
# open set
$a = Set::Infinite->new(1,5);
test ( '', ' $a->quantize ',
"[1..2),[2..3),[3..4),[4..5),[5..6)");
$a = $a->complement(5);
# print "open set $a\n";
test ( '', ' $a->quantize ',
"[1..2),[2..3),[3..4),[4..5)");
$a = $a->complement(1);
# print "open set $a\n";
test ( '', ' $a->quantize ',
"[1..2),[2..3),[3..4),[4..5)");
# open set, real
$a = Set::Infinite->new(1.1,5.1);
test ( '', ' $a->quantize ',
"[1..2),[2..3),[3..4),[4..5),[5..6)");
$a = $a->complement(5.1);
# print "open set $a\n";
test ( '', ' $a->quantize ',
"[1..2),[2..3),[3..4),[4..5),[5..6)");
$a = $a->complement(1.1);
# print "open set $a\n";
test ( '', ' $a->quantize ',
"[1..2),[2..3),[3..4),[4..5),[5..6)");
# open integer set
$a = Set::Infinite->new(1,5)->integer;
test ( '', ' $a->quantize ',
"[1..2),[2..3),[3..4),[4..5),[5..6)");
$a = $a->complement(5);
# print "open set $a\n";
test ( '', ' $a->quantize ',
"[1..2),[2..3),[3..4),[4..5)");
$a = $a->complement(1);
# print "open set $a\n";
test ( '', ' $a->quantize ',
"[2..3),[3..4),[4..5)");
1;