-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathlinkedhashmap_test.go
85 lines (70 loc) · 1.67 KB
/
linkedhashmap_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package set
import (
"math/rand"
"testing"
"github.com/stretchr/testify/require"
)
func TestGet(t *testing.T) {
t.Run("When the key exists", func(t *testing.T) {
set := newLinkedHashMap()
value := rand.Int()
set.Put("test", value)
require.Equal(t, value, set.Get("test"))
})
t.Run("When the key not exists", func(t *testing.T) {
set := newLinkedHashMap()
result := set.Get("bla")
require.Nil(t, result)
})
}
func TestPut(t *testing.T) {
t.Run("valid key", func(t *testing.T) {
set := newLinkedHashMap()
value := rand.Int()
set.Put("test", value)
require.Equal(t, value, set.Get("test"))
})
t.Run("invalid key", func(t *testing.T) {
set := newLinkedHashMap()
value := rand.Int()
set.Put(nil, value)
require.Equal(t, 0, set.Length())
})
}
func TestRemove(t *testing.T) {
testNumbers := []int{1, 2, 3}
t.Run("first value", func(t *testing.T) {
set := newLinkedHashMap()
for _, number := range testNumbers {
set.Put(number, number)
}
set.Remove(1)
require.Equal(t, 2, set.Length())
require.Nil(t, set.Get(1))
})
t.Run("last value", func(t *testing.T) {
set := newLinkedHashMap()
for _, number := range testNumbers {
set.Put(number, number)
}
set.Remove(3)
require.Equal(t, 2, set.Length())
require.Nil(t, set.Get(3))
})
t.Run("middle value", func(t *testing.T) {
set := newLinkedHashMap()
for _, number := range testNumbers {
set.Put(number, number)
}
set.Remove(2)
require.Equal(t, 2, set.Length())
require.Nil(t, set.Get(2))
})
t.Run("single value", func(t *testing.T) {
set := newLinkedHashMap()
set.Put(1, 1)
set.Remove(1)
require.Equal(t, 0, set.Length())
require.Nil(t, set.Get(1))
})
}