Blob Blame History Raw
#/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;