github.com/kazu/loncha@v0.6.3/example/sample_test.go (about) 1 package example_test 2 3 import ( 4 "testing" 5 6 "github.com/kazu/loncha" 7 "github.com/kazu/loncha/example" 8 "github.com/kazu/loncha/list_head" 9 "github.com/stretchr/testify/assert" 10 ) 11 12 func TestContainerListAdd(t *testing.T) { 13 list_head.MODE_CONCURRENT = true 14 var list example.Sample 15 list.Init() 16 17 hoge := example.Sample{ID: 1, Name: "aaa"} 18 hoge.Init() 19 list.Add(&hoge) 20 21 hoge2 := example.Sample{ID: 2, Name: "bbb"} 22 hoge2.Init() 23 24 hoge.Add(&hoge2) 25 26 assert.Equal(t, hoge.Next().ID, 2) 27 assert.Equal(t, hoge.Len(), 2) 28 assert.Equal(t, hoge.Next().Len(), 2) 29 30 cnt := 0 31 list.Each(func(e *example.Sample) { 32 if cnt == 0 { 33 assert.Equal(t, 1, e.ID) 34 } else { 35 assert.Equal(t, 2, e.ID) 36 } 37 cnt++ 38 }) 39 assert.Equal(t, 2, cnt) 40 } 41 42 func TestDelete(t *testing.T) { 43 44 tests := []struct { 45 Name string 46 Count int 47 deletes []int 48 }{ 49 { 50 Name: "first middle last delete", 51 Count: 10, 52 deletes: []int{0, 5, 9}, 53 }, 54 { 55 Name: "continus delete", 56 Count: 10, 57 deletes: []int{4, 5, 6}, 58 }, 59 { 60 Name: "continus delete in last", 61 Count: 10, 62 deletes: []int{3, 4, 5, 8, 9}, 63 }, 64 { 65 Name: "continus delete in first", 66 Count: 10, 67 deletes: []int{0, 1, 2, 4, 5, 6}, 68 }, 69 { 70 Name: "all deleted", 71 Count: 3, 72 deletes: []int{0, 1, 2}, 73 }, 74 } 75 76 makeElement := func() *example.Sample { 77 e := &example.Sample{} 78 e.Init() 79 return e 80 } 81 82 list_head.MODE_CONCURRENT = true 83 84 for _, test := range tests { 85 t.Run(test.Name, func(t *testing.T) { 86 var list example.Sample 87 list.Init() 88 for i := 0; i < test.Count; i++ { 89 e := makeElement() 90 list.Add(e) 91 92 found := loncha.Contain(&test.deletes, func(idx int) bool { 93 return test.deletes[idx] == i 94 }) 95 if found { 96 e.Delete() 97 } 98 } 99 if list.Len() != test.Count-len(test.deletes) { 100 t.Errorf("missmatch len=%d cnt=%d deletes=%d", list.Len(), test.Count, len(test.deletes)) 101 } 102 103 }) 104 } 105 }