Home | History | Annotate | Download | only in perl
      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 
      7 sub 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 
     17 sub sortFunc {
     18     my($a, $b) = @_;
     19     my($va, $vb);
     20 
     21     $va = $a->objValue();
     22     $vb = $b->objValue();
     23     return $va <=> $vb;
     24 }
     25 
     26 use Test;
     27 BEGIN { plan tests => 13 };
     28 use ClearSilver;
     29 ok(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();
     65 if (!$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();
     76 if (!$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");
    110 print $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 ?>");
    156 if (!$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");
    167 if (!$ret) {
    168     result($testnum, 0);
    169 }
    170 $ret = $cs->render();
    171 open(FH, "> test.out");
    172 print FH $ret;
    173 close(FH);
    174 $ret = system("diff test.gold test.out > /dev/null");
    175 $ret ? result($testnum, 0) : result($testnum, 1); 
    176 
    177 
    178