|  | // $G $F.go && $L $F.$A && ./$A.out | 
|  |  | 
|  | // 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 main | 
|  |  | 
|  | import "container/vector" | 
|  |  | 
|  |  | 
|  | type S struct { | 
|  | val int | 
|  | } | 
|  |  | 
|  |  | 
|  | func (p *S) Init(val int) *S { | 
|  | p.val = val; | 
|  | return p; | 
|  | } | 
|  |  | 
|  |  | 
|  | func test0() { | 
|  | v := vector.New(0); | 
|  | if v.Len() != 0 { | 
|  | panic("len = ", v.Len(), "\n"); | 
|  | } | 
|  | } | 
|  |  | 
|  |  | 
|  | func test1() { | 
|  | var a [1000] *S; | 
|  | for i := 0; i < len(a); i++ { | 
|  | a[i] = new(S).Init(i); | 
|  | } | 
|  |  | 
|  | v := vector.New(0); | 
|  | for i := 0; i < len(a); i++ { | 
|  | v.Insert(0, a[i]); | 
|  | if v.Len() != i + 1 { | 
|  | panic("len = ", v.Len(), "\n"); | 
|  | } | 
|  | } | 
|  |  | 
|  | for i := 0; i < v.Len(); i++ { | 
|  | x := v.At(i).(*S); | 
|  | if x.val != v.Len() - i - 1 { | 
|  | panic("expected ", i, ", found ", x.val, "\n"); | 
|  | } | 
|  | } | 
|  |  | 
|  | for v.Len() > 10 { | 
|  | v.Delete(10); | 
|  | } | 
|  | } | 
|  |  | 
|  |  | 
|  | func main() { | 
|  | test0(); | 
|  | test1(); | 
|  | } |