package publicsuffix
import (
"bufio"
"os"
"strings"
"testing"
)
type pslTestCase struct {
input string
output string
error bool
}
func TestPsl(t *testing.T) {
f, err := os.Open("../fixtures/tests.txt")
if err != nil {
panic(err)
}
defer f.Close()
testCases := []pslTestCase{}
scanner := bufio.NewScanner(f)
scanner.Split(bufio.ScanLines)
for scanner.Scan() {
line := scanner.Text()
switch {
case line == "":
break
case strings.HasPrefix(line, "//"):
break
default:
xy := strings.Split(line, " ")
tc := pslTestCase{}
tc.input = xy[0]
if xy[1] == "null" {
tc.error = true
} else {
tc.error = false
tc.output = xy[1]
}
testCases = append(testCases, tc)
}
}
for _, testCase := range testCases {
input, err := ToASCII(testCase.input)
if err != nil {
t.Fatalf("failed to convert input %v to ASCII", testCase.input)
}
output, err := ToASCII(testCase.output)
if err != nil {
t.Fatalf("failed to convert output %v to ASCII", testCase.output)
}
got, err := Domain(input)
if testCase.error && err == nil {
t.Errorf("PSL(%v) should have returned error, got: %v", testCase.input, got)
continue
}
if !testCase.error && err != nil {
t.Errorf("PSL(%v) returned error: %v", testCase.input, err)
continue
}
if got != output {
t.Errorf("PSL(%v) = %v, want %v", testCase.input, got, testCase.output)
continue
}
}
}