#!/usr/bin/perl -w

###----------------------------------------------------------------###
#  Copyright 2003 - Paul Seamons                                     #
#  Distributed under the GNU General Public License without warranty #
###----------------------------------------------------------------###

use strict;
use lib qw(/home/pauls/perlcad/lib);

use Data::DumpEx;
use Devel::Size qw(size total_size);

print "Basic data structure size test\n";

my $c = undef;
print "Undef\t=>\t".size($c)."\n";

$c = "";
print "''\t=>\t".size($c)."\n";

$c = "a";
print "'$c'\t=>\t".size($c)."\n";

$c = "ab";
print "'ab'\t=>\t".size($c)."\n";

$c = "abc";
print "'abc'\t=>\t".size($c)."\n";

$c = 1;
print "1\t=>\t".size($c)."\n";

$c = 1.1;
print "1.1\t=>\t".size($c)."\n";

$c = 1.1;
$c = ''.$c;
print "''.1.1\t=>\t".size($c)."\n";



$c = [];
print "[]\t=>\t".size($c)."\n";

$c = [1];
print "[1]\t=>\t".size($c)."\n";

$c = [1,2,3];
print "[1,2,3]\t=>\t".size($c)."\n";

$c = [(2)x3];
print "[(2)x3]\t=>\t".size($c)."\n";

$c = [(2)x5];
print "[(2)x5]\t=>\t".size($c)."\n";

$c = [(2)x7];
print "[(2)x7]\t=>\t".size($c)."\n";

$c = [(2)x9];
print "[(2)x9]\t=>\t".size($c)."\n";

$c = [(2)x1000];
print "[(2)x1000]\t=>\t".size($c)."\n";

$c = bless [1], 'Foo';
print "bless [1], 'Foo'\t=>\t".size($c)."\n";



$c = {};
print "{}\t=>\t".size($c)."\n";

$c = {a => undef};
print "{a => undef}\t=>\t".size($c)."\n";

$c = {ab => undef};
print "{ab => undef}\t=>\t".size($c)."\n";

$c = {ab => 1};
print "{ab => 1}\t=>\t".size($c)."\n";

$c = {ab => 1, d => 2};
print "{ab => 1, d => 2}\t=>\t".size($c)."\n";

$c = bless {ab => 1}, 'Foo';
print "bless {ab => 1}, 'Foo'\t=>\t".size($c)."\n";

$c = bless [1, 1, 1, [0.0,0.0,0.0], [0.0,1.0,1.0]], 'Line';
print "Array obj s\t=>\t".size($c)."\n";
print "Array obj ts\t=>\t".total_size($c)."\n";
$c = bless ['default', 'bylayer', 'bylayer', [0.0,0.0,0.0], [0.0,1.0,1.0]], 'Line';
print "Array obj\t=>\t".total_size($c)."\n";
$c = bless {
  layer => 'default',
  color => 'bylayer',
  ltype => 'bylayer',
  p1    => [0.0,0.0,0.0],
  p2    => [0.0,1.0,1.0],
}, 'Line';
print "Hash obj s\t=>\t".size($c)."\n";
print "Hash obj ts\t=>\t".total_size($c)."\n";

###----------------------------------------------------------------###

__END__
