1#!/usr/bin/perl 2# 3# Copyright (c) 1997 Shigio Yamaguchi. All rights reserved. 4# Copyright (c) 1999 Tama Communications Corporation. All rights reserved. 5# 6# Redistribution and use in source and binary forms, with or without 7# modification, are permitted provided that the following conditions 8# are met: 9# 1. Redistributions of source code must retain the above copyright 10# notice, this list of conditions and the following disclaimer. 11# 2. Redistributions in binary form must reproduce the above copyright 12# notice, this list of conditions and the following disclaimer in the 13# documentation and/or other materials provided with the distribution. 14# 15# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25# SUCH DAMAGE. 26# 27# 28 29# 30# Test script for abs2rel(3) and rel2abs(3). 31# 32$logfile = 'err'; 33# 34# target base directory result 35# -------------------------------------- 36@abs2rel = ( 37 '. / .', 38 'a/b/c / a/b/c', 39 'a/b/c /a a/b/c', 40 '/a/b/c a ERROR', 41); 42@rel2abs = ( 43 '. / /', 44 './ / /', 45 '/a/b/c / /a/b/c', 46 '/a/b/c /a /a/b/c', 47 'a/b/c a ERROR', 48 '.. /a /', 49 '../ /a /', 50 '../.. /a /', 51 '../../ /a /', 52 '../../.. /a /', 53 '../../../ /a /', 54 '../b /a /b', 55 '../b/ /a /b/', 56 '../../b /a /b', 57 '../../b/ /a /b/', 58 '../../../b /a /b', 59 '../../../b/ /a /b/', 60 '../b/c /a /b/c', 61 '../b/c/ /a /b/c/', 62 '../../b/c /a /b/c', 63 '../../b/c/ /a /b/c/', 64 '../../../b/c /a /b/c', 65 '../../../b/c/ /a /b/c/', 66); 67@common = ( 68 '/a/b/c /a/b/c .', 69 '/a/b/c /a/b/ c', 70 '/a/b/c /a/b c', 71 '/a/b/c /a/ b/c', 72 '/a/b/c /a b/c', 73 '/a/b/c / a/b/c', 74 '/a/b/c /a/b/c .', 75 '/a/b/c /a/b/c/ .', 76 '/a/b/c/ /a/b/c ./', 77 '/a/b/ /a/b/c ../', 78 '/a/b /a/b/c ..', 79 '/a/ /a/b/c ../../', 80 '/a /a/b/c ../..', 81 '/ /a/b/c ../../../', 82 '/a/b/c /a/b/z ../c', 83 '/a/b/c /a/y/z ../../b/c', 84 '/a/b/c /x/y/z ../../../a/b/c', 85); 86print "TEST start "; 87open(LOG, ">$logfile") || die("cannot open log file '$logfile'.\n"); 88$cnt = 0; 89$progname = 'abs2rel'; 90foreach (@abs2rel) { 91 @d = split; 92 chop($result = `./$progname $d[0] $d[1]`); 93 if ($d[2] eq $result) { 94 print '.'; 95 } else { 96 print 'X'; 97 print LOG "$progname $d[0] $d[1] -> $result (It should be '$d[2]')\n"; 98 $cnt++; 99 } 100} 101foreach (@common) { 102 @d = split; 103 chop($result = `./$progname $d[0] $d[1]`); 104 if ($d[2] eq $result) { 105 print '.'; 106 } else { 107 print 'X'; 108 print LOG "$progname $d[0] $d[1] -> $result (It should be '$d[2]')\n"; 109 $cnt++; 110 } 111} 112$progname = 'rel2abs'; 113foreach (@rel2abs) { 114 @d = split; 115 chop($result = `./$progname $d[0] $d[1]`); 116 if ($d[2] eq $result) { 117 print '.'; 118 } else { 119 print 'X'; 120 print LOG "$progname $d[0] $d[1] -> $result (It should be '$d[2]')\n"; 121 $cnt++; 122 } 123} 124foreach (@common) { 125 @d = split; 126 chop($result = `./$progname $d[2] $d[1]`); 127 if ($d[0] eq $result) { 128 print '.'; 129 } else { 130 print 'X'; 131 print LOG "$progname $d[2] $d[1] -> $result (It should be '$d[0]')\n"; 132 $cnt++; 133 } 134} 135close(LOG); 136if ($cnt == 0) { 137 print " COMPLETED.\n"; 138} else { 139 print " $cnt errors detected.\n"; 140 open(LOG, $logfile) || die("log file not found.\n"); 141 while (<LOG>) { 142 print; 143 } 144 close(LOG); 145} 146