// Copyright 2009 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package vector import ( "fmt" "sort" "testing" ) var ( zero interface{} intzero int strzero string ) func int2Value(x int) int { return x } func int2IntValue(x int) int { return x } func int2StrValue(x int) string { return string(x) } func elem2Value(x interface{}) int { return x.(int) } func elem2IntValue(x int) int { return x } func elem2StrValue(x string) string { return x } func intf2Value(x interface{}) int { return x.(int) } func intf2IntValue(x interface{}) int { return x.(int) } func intf2StrValue(x interface{}) string { return x.(string) } type VectorInterface interface { Len() int Cap() int } func checkSize(t *testing.T, v VectorInterface, len, cap int) { if v.Len() != len { t.Errorf("%T expected len = %d; found %d", v, len, v.Len()) } if v.Cap() < cap { t.Errorf("%T expected cap >= %d; found %d", v, cap, v.Cap()) } } func val(i int) int { return i*991 - 1234 } func TestSorting(t *testing.T) { const n = 100 a := new(IntVector).Resize(n, 0) for i := n - 1; i >= 0; i-- { a.Set(i, n-1-i) } if sort.IsSorted(a) { t.Error("int vector not sorted") } b := new(StringVector).Resize(n, 0) for i := n - 1; i >= 0; i-- { b.Set(i, fmt.Sprint(n-1-i)) } if sort.IsSorted(b) { t.Error("string vector not sorted") } } func tname(x interface{}) string { return fmt.Sprintf("%T: ", x) }