github.com/q45/go@v0.0.0-20151101211701-a4fb8c13db3f/src/cmd/compile/internal/gc/reflect_test.go (about)

     1  // Copyright 2015 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 gc
     6  
     7  import (
     8  	"reflect"
     9  	"sort"
    10  	"testing"
    11  )
    12  
    13  func TestSortingByMethodNameAndPackagePath(t *testing.T) {
    14  	data := []*Sig{
    15  		&Sig{name: "b", pkg: &Pkg{Path: "abc"}},
    16  		&Sig{name: "b", pkg: nil},
    17  		&Sig{name: "c", pkg: nil},
    18  		&Sig{name: "c", pkg: &Pkg{Path: "uvw"}},
    19  		&Sig{name: "c", pkg: nil},
    20  		&Sig{name: "b", pkg: &Pkg{Path: "xyz"}},
    21  		&Sig{name: "a", pkg: &Pkg{Path: "abc"}},
    22  		&Sig{name: "b", pkg: nil},
    23  	}
    24  	want := []*Sig{
    25  		&Sig{name: "a", pkg: &Pkg{Path: "abc"}},
    26  		&Sig{name: "b", pkg: nil},
    27  		&Sig{name: "b", pkg: nil},
    28  		&Sig{name: "b", pkg: &Pkg{Path: "abc"}},
    29  		&Sig{name: "b", pkg: &Pkg{Path: "xyz"}},
    30  		&Sig{name: "c", pkg: nil},
    31  		&Sig{name: "c", pkg: nil},
    32  		&Sig{name: "c", pkg: &Pkg{Path: "uvw"}},
    33  	}
    34  	if len(data) != len(want) {
    35  		t.Fatal("want and data must match")
    36  	}
    37  	if reflect.DeepEqual(data, want) {
    38  		t.Fatal("data must be shuffled")
    39  	}
    40  	sort.Sort(byMethodNameAndPackagePath(data))
    41  	if !reflect.DeepEqual(data, want) {
    42  		t.Logf("want: %#v", want)
    43  		t.Logf("data: %#v", data)
    44  		t.Errorf("sorting failed")
    45  	}
    46  
    47  }