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  }