// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package net

import (
	"testing"
)

type portTest struct {
	netw string
	name string
	port int
	ok   bool
}

var porttests = []portTest{
	portTest{"tcp", "echo", 7, true},
	portTest{"tcp", "discard", 9, true},
	portTest{"tcp", "systat", 11, true},
	portTest{"tcp", "daytime", 13, true},
	portTest{"tcp", "chargen", 19, true},
	portTest{"tcp", "ftp-data", 20, true},
	portTest{"tcp", "ftp", 21, true},
	portTest{"tcp", "ssh", 22, true},
	portTest{"tcp", "telnet", 23, true},
	portTest{"tcp", "smtp", 25, true},
	portTest{"tcp", "time", 37, true},
	portTest{"tcp", "domain", 53, true},
	portTest{"tcp", "gopher", 70, true},
	portTest{"tcp", "finger", 79, true},
	portTest{"tcp", "http", 80, true},

	portTest{"udp", "echo", 7, true},
	portTest{"udp", "tftp", 69, true},
	portTest{"udp", "bootpc", 68, true},
	portTest{"udp", "bootps", 67, true},
	portTest{"udp", "domain", 53, true},
	portTest{"udp", "ntp", 123, true},
	portTest{"udp", "snmp", 161, true},
	portTest{"udp", "syslog", 514, true},

	portTest{"--badnet--", "zzz", 0, false},
	portTest{"tcp", "--badport--", 0, false},
}

func TestLookupPort(t *testing.T) {
	for i := 0; i < len(porttests); i++ {
		tt := porttests[i]
		if port, err := LookupPort(tt.netw, tt.name); port != tt.port || (err == nil) != tt.ok {
			t.Errorf("LookupPort(%q, %q) = %v, %s; want %v",
				tt.netw, tt.name, port, err, tt.port)
		}
	}
}
