123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- #!/bin/bash
- rm -f X1 X2 X3 X1.txt X2.txt X3.txt
- cat > X1.txt << EOF
- 1 12
- A 1 2 1000 1
- A 1 3 20 2
- A 1 4 21 8
- A 1 5 8 9
- A 3 4 1 10
- A 3 5 100 11
- A 3 11 100 12
- A 2 80 8 13
- A 2 81 22 14
- A 2 5 7 15
- A 3 1 22 16
- A 3 80 10 17
- A 4 5 10 18
- A 10 20 10 1020
- A 10 30 10 1030
- A 10 40 10 1040
- A 20 30 10 2030
- A 30 40 10 3040
- A 40 50 10 4050
- A 40 60 10 4060
- A 60 50 10 6050
- EOF
- cat > X2.txt << EOF
- 2 12
- A 1 2 1000 1
- A 1 3 20 2
- A 1 4 21 8
- A 1 5 8 9
- A 3 4 1 10
- A 3 5 100 11
- A 3 11 100 12
- A 2 80 8 13
- A 2 81 22 14
- A 2 5 7 15
- A 3 1 22 16
- A 3 80 10 17
- A 4 5 10 18
- A 10 20 10 1020
- A 10 30 10 1030
- A 10 40 10 1040
- A 20 30 10 2030
- A 30 40 10 3040
- A 40 50 10 4050
- A 40 60 10 4060
- A 60 50 10 6050
- EOF
- cat > X3.txt << EOF
- 3 12
- A 1 2 1000 1
- A 1 3 20 2
- A 1 4 21 8
- A 1 5 8 9
- A 3 4 1 10
- A 3 5 100 11
- A 3 11 100 12
- A 2 80 8 13
- A 2 81 22 14
- A 2 5 7 15
- A 3 1 22 16
- A 3 80 10 17
- A 4 5 10 18
- A 10 20 10 1020
- A 10 30 10 1030
- A 10 40 10 1040
- A 20 30 10 2030
- A 30 40 10 3040
- A 40 50 10 4050
- A 40 60 10 4060
- A 60 50 10 6050
- EOF
- function check_path () {
- fromNode=$1
- toNode=$2
- totDistance=$3
- nLinks=$4
- nodeList=($5)
- file=$6
- echo "check_path $fromNode -> $toNode - tot. distance $totDistance - n. links $nLinks"
- vlist=(`./shortest_path -g $file -f $fromNode -t $toNode`) || { echo "compute shortest path: command execution failed."; exit 1; }
- test "${vlist[10]}" = "unreachable" && {
- echo "node $toNode is unreachable - test failed"; exit 1
- }
- test "${vlist[12]}" = "$nLinks" || {
- echo "link count is ${vlist[12]} instead of $nLinks - test failed"; exit 1
- }
- test "${vlist[16]}" = "$totDistance" || {
- echo "total distance is ${vlist[16]} instead of $totDistance - test failed"; exit 1
- }
- i=19
- iNodeList=0
- for (( iLink=0 ; iLink < $nLinks ; iLink++ ))
- do
- test ! "${vlist[$i]}" == "${nodeList[$iNodeList]}" && {
- echo "wrong link $iLink head (${vlist[$i]}, ${nodeList[$iNodeList]}) - test failed"; exit 1
- }
- let i=i+2
- let iNodeList=iNodeList+1
- test ! "${vlist[$i]}" == "${nodeList[$iNodeList]}" && {
- echo "wrong link $iLink tail (${vlist[$i]}, ${nodeList[$iNodeList]}) - test failed"; exit 1
- }
- let i=i+17
- let iNodeList=iNodeList+1
- done
- echo "done"
- }
- #
- #
- #
- echo "script rtest03.sh: test shortest path computations..."
- ./cr_from_a -f X1.txt -g X1 || { echo "create test graph: command execution failed."; exit 1; }
- check_path 1 80 30 2 "1 3 3 80" X1 || exit 1
- check_path 3 1 22 1 "3 1" X1 || exit 1
- ./cr_from_a -f X2.txt -g X2 || { echo "create test graph: command execution failed."; exit 1; }
- check_path 1 80 30 2 "1 3 3 80" X2 || exit 1
- check_path 3 1 22 1 "3 1" X2 || exit 1
- echo "script done"
- rm -f X1 X2 X3 X1.txt X2.txt X3.txt
- exit 0
|