#!/bin/sh

test_result() {
	[ "$1" = "$2" ] || { echo "Normalization test failed: actual '$1' != '$2' expected" ; exit 1 ; }
}

test_result "$(echo "" | bin/normalize-resolvconf)" ""
test_result "$(echo "
" | bin/normalize-resolvconf)" ""
test_result "$(echo "nameserver 127.0.0.1" | bin/normalize-resolvconf)" "nameserver 127.0.0.1"
test_result "$(echo "  nameserver  127.0.0.1 # foo	" | bin/normalize-resolvconf)" "nameserver 127.0.0.1"
test_result "$(echo "nameserver 127.000.000.1" | bin/normalize-resolvconf)" "nameserver 127.0.0.1"
test_result "$(echo "nameserver 	127.000.000.1" | bin/normalize-resolvconf)" "nameserver 127.0.0.1"
test_result "$(echo "nameserver ::1" | bin/normalize-resolvconf)" "nameserver ::1"
test_result "$(echo "  nameserver  ::1 #	foo " | bin/normalize-resolvconf)" "nameserver ::1"
test_result "$(echo "nameserver 0:0:0:0:0:0:0:1" | bin/normalize-resolvconf)" "nameserver ::1"
test_result "$(echo "  nameserver	0:0:0:0:0:0:0:1	# foo	" | bin/normalize-resolvconf)" "nameserver ::1"
test_result "$(echo "nameserver 00:000:0:0000:0001" | bin/normalize-resolvconf)" "nameserver ::1"
test_result "$(echo "  nameserver		00:000:0:0000:0001" | bin/normalize-resolvconf)" "nameserver ::1"
test_result "$(echo "nameserver 003:1020:0105:55:0000:1000:0000:0000" | bin/normalize-resolvconf)" "nameserver 3:1020:105:55::1000:0:0"
test_result "$(echo " 	nameserver 003:1020:0105:55:0000:1000:0000:0000" | bin/normalize-resolvconf)" "nameserver 3:1020:105:55::1000:0:0"
test_result "$(echo "nameserver 30:1020:0105:55:0500:1000:0000:0000" | bin/normalize-resolvconf)" "nameserver 30:1020:105:55:500:1000::"
test_result "$(echo "	nameserver 30:1020:0105:55:0500:1000:0000:0000" | bin/normalize-resolvconf)" "nameserver 30:1020:105:55:500:1000::"
test_result "$(echo "nameserver 30::0500:100:0009:0000" | bin/normalize-resolvconf)" "nameserver 30::500:100:9:0"
test_result "$(echo " 	 nameserver 30::0500:100:0009:0000" | bin/normalize-resolvconf)" "nameserver 30::500:100:9:0"
test_result "$(echo "nameserver 30:0500:100::0009:0000" | bin/normalize-resolvconf)" "nameserver 30:500:100::9:0"
test_result "$(echo " 	 nameserver 30:0500:100::0009:0000" | bin/normalize-resolvconf)" "nameserver 30:500:100::9:0"
test_result "$(echo \
"#foo
	nameserver 30:1020:0105:55:0500:1000:0000:0000
nameserver ::1
  nameserver 0000::1 # foo nameserver bwaa haa
  nameserver 0005::1 # foo	bar
nameserver 003:1020:0105:55:0000:1000:0000:0000
options nameserver
anotherthing 1:2 03::4::0005   # Don't touch non-nameservers lines
nameserver   127.0.0.1 #foo bar
   nameserver 0:0:00:0000000:0:0:0:1
bar
search yoyodyne.biz yyy.xxx
baz
# foo 	" | bin/normalize-resolvconf)" \
"nameserver 30:1020:105:55:500:1000::
nameserver ::1
nameserver 0::1
nameserver 5::1
nameserver 3:1020:105:55::1000:0:0
options nameserver
anotherthing 1:2 03::4::0005
nameserver 127.0.0.1
nameserver ::1
bar
search yoyodyne.biz yyy.xxx
baz"

# Check that we are actually testing something
( test_result "$(echo "nameserver 127.0.0.1" | bin/normalize-resolvconf)" "bogusstring" ) > /dev/null
[ "$?" = 1 ] || { echo "Normalization test script contains a programming error." ; exit 2 ; }

echo "Normalization test passed."
exit 0
