1# Before `make install' is performed this script should be runnable with 2# `make test'. After `make install' it should work as `perl test.pl' 3######################### 4 5# change 'tests => 1' to 'tests => last_test_to_print'; 6 7sub result { 8 my($i, $state) = @_; 9 if ($state) { 10 print "ok $i\n"; 11 } else { 12 print "ng $i\n"; 13 exit $i; 14 } 15} 16 17sub sortFunc { 18 my($a, $b) = @_; 19 my($va, $vb); 20 21 $va = $a->objValue(); 22 $vb = $b->objValue(); 23 return $va <=> $vb; 24} 25 26use Test; 27BEGIN { plan tests => 13 }; 28use ClearSilver; 29ok(1); # If we made it this far, we're ok. 30 31$testnum = 2; 32# 33# test new() 34# 35$hdf = ClearSilver::HDF->new(); 36$hdf ? result($testnum, 1) : result($testnum, 0); 37$testnum++; 38 39# 40# test reading file 41# 42$ret = $hdf->readFile("test.hdf"); 43$ret ? result($testnum, 1) : result($testnum, 0); 44$testnum++; 45 46# 47# test getObj() 48# 49$lev2_node = $hdf->getObj("TopNode.2nd1"); 50$lev2_node ? result($testnum, 1) : result($testnum, 0); 51$testnum++; 52 53 54# 55# test objName() 56# 57$lev2_name = $lev2_node->objName(); 58($lev2_name eq "2nd1") ? result($testnum, 1) : result($testnum, 0); 59$testnum++; 60 61# 62# test objChild() & objValue() 63# 64$lev3_node = $lev2_node->objChild(); 65if (!$lev3_node) { 66 result($testnum, 0); 67} 68$val = $lev3_node->objValue(); 69($val eq "value1") ? result($testnum, 1) : result($testnum, 0); 70$testnum++; 71 72# 73# test objNext() 74# 75$next_node = $lev3_node->objNext(); 76if (!$lev3_node) { 77 result($testnum, 0); 78} 79$nam = $next_node->objName(); 80($nam eq "Entry2") ? result($testnum, 1) : result($testnum, 0); 81$testnum++; 82 83# 84# test getChild() 85# 86$lev2_node = $hdf->getChild("TopNode.2nd1"); 87$lev2_node ? result($testnum, 1) : result($testnum, 0); 88$testnum++; 89 90# 91# test setValue() & getValue() 92# 93$hdf->setValue("Data.1", "Value1"); 94$str = $hdf->getValue("Data.1", "default"); 95($str eq "Value1") ? result($testnum, 1) : result($testnum, 0); 96$testnum++; 97 98$str = $hdf->getValue("Data.2", "default"); # doesn't exist 99($str eq "default") ? result($testnum, 1) : result($testnum, 0); 100$testnum++; 101 102# 103# test copy tree 104# 105$copy = ClearSilver::HDF->new(); 106$ret = $copy->copy("", $hdf); 107$ret ? result($testnum, 0) : result($testnum, 1); 108$testnum++; 109$str = $copy->getValue("Data.1", "default"); 110print $str 111($str eq "Value1") ? result($testnum, 1) : result($testnum, 0); 112$testnum++; 113 114# 115# test setSymlink() 116# 117$ret = $copy->setSymlink( "BottomNode" ,"TopNode"); 118$ret ? result($testnum, 1) : result($testnum, 0); 119$testnum++; 120$tmp = $copy->getObj("BottomNode.2nd1"); 121$tmp ? result($testnum, 1) : result($testnum, 0); 122$testnum++; 123 124# 125# test removeTree() 126# 127$ret = $copy->removeTree("TopNode"); 128$ret ? result($testnum, 1) : result($testnum, 0); 129$testnum++; 130$tmp = $copy->getObj("TopNode.2nd1"); 131$tmp ? result($testnum, 0) : result($testnum, 1); 132$testnum++; 133 134# 135# test sortObj() 136# 137$sort_top = $hdf->getObj("Sort.Data"); 138$sort_top->sortObj("sortFunc"); 139$child = $sort_top->objChild(); 140$name = $child->objName(); 141($name eq "entry3") ? result($testnum, 1) : result($testnum, 0); 142$testnum++; 143 144 145# 146# test CS 147# 148$cs = ClearSilver::CS->new($hdf); 149$cs ? result($testnum, 1) : result($testnum, 0); 150$testnum++; 151 152# 153# parseString() and render() 154# 155$ret = $cs->parseString("<?cs var:TopNode.2nd1.Entry3 ?>"); 156if (!$ret) { 157 result($testnum, 0); 158} 159$ret = $cs->render(); 160($ret eq "value3") ? result($testnum, 1) : result($testnum, 0); 161$testnum++; 162 163# 164# parseFile() 165# 166$ret = $cs->parseFile("test.cs"); 167if (!$ret) { 168 result($testnum, 0); 169} 170$ret = $cs->render(); 171open(FH, "> test.out"); 172print FH $ret; 173close(FH); 174$ret = system("diff test.gold test.out > /dev/null"); 175$ret ? result($testnum, 0) : result($testnum, 1); 176 177 178