Home | History | Annotate | Download | only in net
      1 // Copyright 2016 The Go Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style
      3 // license that can be found in the LICENSE file.
      4 
      5 package net
      6 
      7 import "testing"
      8 
      9 var parsePortTests = []struct {
     10 	service     string
     11 	port        int
     12 	needsLookup bool
     13 }{
     14 	{"", 0, false},
     15 
     16 	// Decimal number literals
     17 	{"-1073741825", -1 << 30, false},
     18 	{"-1073741824", -1 << 30, false},
     19 	{"-1073741823", -(1<<30 - 1), false},
     20 	{"-123456789", -123456789, false},
     21 	{"-1", -1, false},
     22 	{"-0", 0, false},
     23 	{"0", 0, false},
     24 	{"+0", 0, false},
     25 	{"+1", 1, false},
     26 	{"65535", 65535, false},
     27 	{"65536", 65536, false},
     28 	{"123456789", 123456789, false},
     29 	{"1073741822", 1<<30 - 2, false},
     30 	{"1073741823", 1<<30 - 1, false},
     31 	{"1073741824", 1<<30 - 1, false},
     32 	{"1073741825", 1<<30 - 1, false},
     33 
     34 	// Others
     35 	{"abc", 0, true},
     36 	{"9pfs", 0, true},
     37 	{"123badport", 0, true},
     38 	{"bad123port", 0, true},
     39 	{"badport123", 0, true},
     40 	{"123456789badport", 0, true},
     41 	{"-2147483649badport", 0, true},
     42 	{"2147483649badport", 0, true},
     43 }
     44 
     45 func TestParsePort(t *testing.T) {
     46 	// The following test cases are cribbed from the strconv
     47 	for _, tt := range parsePortTests {
     48 		if port, needsLookup := parsePort(tt.service); port != tt.port || needsLookup != tt.needsLookup {
     49 			t.Errorf("parsePort(%q) = %d, %t; want %d, %t", tt.service, port, needsLookup, tt.port, tt.needsLookup)
     50 		}
     51 	}
     52 }
     53