github.com/zebozhuang/go@v0.0.0-20200207033046-f8a98f6f5c5d/src/net/port_test.go (about)

     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  }