github.com/sean-/go@v0.0.0-20151219100004-97f854cd7bb6/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 }