xref: /freebsd/lib/libpathconv/tests/test.pl (revision 81ad6265)
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# $FreeBSD$
28#
29
30#
31# Test script for abs2rel(3) and rel2abs(3).
32#
33$logfile = 'err';
34#
35#       target          base directory  result
36#       --------------------------------------
37@abs2rel = (
38	'.		/		.',
39	'a/b/c		/		a/b/c',
40	'a/b/c		/a		a/b/c',
41	'/a/b/c		a		ERROR',
42);
43@rel2abs = (
44	'.		/		/',
45	'./		/		/',
46	'/a/b/c		/		/a/b/c',
47	'/a/b/c		/a		/a/b/c',
48	'a/b/c		a		ERROR',
49	'..		/a		/',
50	'../		/a		/',
51	'../..		/a		/',
52	'../../		/a		/',
53	'../../..	/a		/',
54	'../../../	/a		/',
55	'../b		/a		/b',
56	'../b/		/a		/b/',
57	'../../b	/a		/b',
58	'../../b/	/a		/b/',
59	'../../../b	/a		/b',
60	'../../../b/	/a		/b/',
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	'../../../b/c/	/a		/b/c/',
67);
68@common = (
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/c/	/a/b/c		./',
78	'/a/b/		/a/b/c		../',
79	'/a/b		/a/b/c		..',
80	'/a/		/a/b/c		../../',
81	'/a		/a/b/c		../..',
82	'/		/a/b/c		../../../',
83	'/a/b/c		/a/b/z		../c',
84	'/a/b/c		/a/y/z		../../b/c',
85	'/a/b/c		/x/y/z		../../../a/b/c',
86);
87print "TEST start ";
88open(LOG, ">$logfile") || die("cannot open log file '$logfile'.\n");
89$cnt = 0;
90$progname = 'abs2rel';
91foreach (@abs2rel) {
92	@d = split;
93	chop($result = `./$progname $d[0] $d[1]`);
94	if ($d[2] eq $result) {
95		print '.';
96	} else {
97		print 'X';
98		print LOG "$progname $d[0] $d[1] -> $result (It should be '$d[2]')\n";
99		$cnt++;
100	}
101}
102foreach (@common) {
103	@d = split;
104	chop($result = `./$progname $d[0] $d[1]`);
105	if ($d[2] eq $result) {
106		print '.';
107	} else {
108		print 'X';
109		print LOG "$progname $d[0] $d[1] -> $result (It should be '$d[2]')\n";
110		$cnt++;
111	}
112}
113$progname = 'rel2abs';
114foreach (@rel2abs) {
115	@d = split;
116	chop($result = `./$progname $d[0] $d[1]`);
117	if ($d[2] eq $result) {
118		print '.';
119	} else {
120		print 'X';
121		print LOG "$progname $d[0] $d[1] -> $result (It should be '$d[2]')\n";
122		$cnt++;
123	}
124}
125foreach (@common) {
126	@d = split;
127	chop($result = `./$progname $d[2] $d[1]`);
128	if ($d[0] eq $result) {
129		print '.';
130	} else {
131		print 'X';
132		print LOG "$progname $d[2] $d[1] -> $result (It should be '$d[0]')\n";
133		$cnt++;
134	}
135}
136close(LOG);
137if ($cnt == 0) {
138	print " COMPLETED.\n";
139} else {
140	print " $cnt errors detected.\n";
141	open(LOG, $logfile) || die("log file not found.\n");
142	while (<LOG>) {
143		print;
144	}
145	close(LOG);
146}
147