github.com/sanprasirt/go@v0.0.0-20170607001320-a027466e4b6d/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 "cmd/compile/internal/types" 9 "cmd/internal/obj" 10 "reflect" 11 "testing" 12 ) 13 14 func TestSortingBySigLT(t *testing.T) { 15 data := []*Sig{ 16 &Sig{name: "b", pkg: &types.Pkg{Path: "abc"}}, 17 &Sig{name: "b", pkg: nil}, 18 &Sig{name: "c", pkg: nil}, 19 &Sig{name: "c", pkg: &types.Pkg{Path: "uvw"}}, 20 &Sig{name: "c", pkg: nil}, 21 &Sig{name: "b", pkg: &types.Pkg{Path: "xyz"}}, 22 &Sig{name: "a", pkg: &types.Pkg{Path: "abc"}}, 23 &Sig{name: "b", pkg: nil}, 24 } 25 want := []*Sig{ 26 &Sig{name: "a", pkg: &types.Pkg{Path: "abc"}}, 27 &Sig{name: "b", pkg: nil}, 28 &Sig{name: "b", pkg: nil}, 29 &Sig{name: "b", pkg: &types.Pkg{Path: "abc"}}, 30 &Sig{name: "b", pkg: &types.Pkg{Path: "xyz"}}, 31 &Sig{name: "c", pkg: nil}, 32 &Sig{name: "c", pkg: nil}, 33 &Sig{name: "c", pkg: &types.Pkg{Path: "uvw"}}, 34 } 35 if len(data) != len(want) { 36 t.Fatal("want and data must match") 37 } 38 if reflect.DeepEqual(data, want) { 39 t.Fatal("data must be shuffled") 40 } 41 obj.SortSlice(data, func(i, j int) bool { return siglt(data[i], data[j]) }) 42 if !reflect.DeepEqual(data, want) { 43 t.Logf("want: %#v", want) 44 t.Logf("data: %#v", data) 45 t.Errorf("sorting failed") 46 } 47 }