| // 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) } |