github.com/aacfactory/rings@v1.1.2/immutable_test.go (about) 1 package rings_test 2 3 import ( 4 "fmt" 5 "github.com/aacfactory/rings" 6 "testing" 7 ) 8 9 type Item struct { 10 key string 11 value int 12 } 13 14 func (item *Item) Key() (key string) { 15 key = item.key 16 return 17 } 18 19 func (item *Item) String() (s string) { 20 s = fmt.Sprintf("%s:%d", item.key, item.value) 21 return 22 } 23 24 func createItems(n int) (items []*Item) { 25 items = make([]*Item, 0, 1) 26 for i := 0; i < n; i++ { 27 items = append(items, &Item{ 28 key: fmt.Sprintf("%d", i), 29 value: i, 30 }) 31 } 32 return 33 } 34 35 func TestNewImmutable(t *testing.T) { 36 items := createItems(5) 37 r := rings.NewImmutable[*Item]("immutable", items) 38 for i := 0; i < 9; i++ { 39 fmt.Println(i, "->", r.Next().String()) 40 } 41 fmt.Println(r.Get("0")) 42 fmt.Println(r) 43 }