storage_test.gno
2.12 Kb ยท 70 lines
1package simple_test
2
3import (
4 "testing"
5
6 "gno.land/p/demo/gnorkle/storage"
7 "gno.land/p/demo/gnorkle/storage/simple"
8 "gno.land/p/demo/uassert"
9 "gno.land/p/demo/ufmt"
10 "gno.land/p/demo/urequire"
11)
12
13func TestStorage(t *testing.T) {
14 var undefinedStorage *simple.Storage
15 err := undefinedStorage.Put("")
16 uassert.ErrorIs(t, err, storage.ErrUndefined, "expected storage.ErrUndefined on undefined storage")
17
18 tests := []struct {
19 name string
20 valuesToPut []string
21 expLatestValueString string
22 expLatestValueTimeIsZero bool
23 expHistoricalValueStrings []string
24 }{
25 {
26 name: "empty",
27 expLatestValueTimeIsZero: true,
28 },
29 {
30 name: "one value",
31 valuesToPut: []string{"one"},
32 expLatestValueString: "one",
33 expHistoricalValueStrings: []string{"one"},
34 },
35 {
36 name: "two values",
37 valuesToPut: []string{"one", "two"},
38 expLatestValueString: "two",
39 expHistoricalValueStrings: []string{"one", "two"},
40 },
41 {
42 name: "three values",
43 valuesToPut: []string{"one", "two", "three"},
44 expLatestValueString: "three",
45 expHistoricalValueStrings: []string{"two", "three"},
46 },
47 }
48
49 for _, tt := range tests {
50 t.Run(tt.name, func(t *testing.T) {
51 simpleStorage := simple.NewStorage(2)
52 for _, value := range tt.valuesToPut {
53 err := simpleStorage.Put(value)
54 urequire.NoError(t, err, "unexpected error putting value in storage")
55 }
56
57 latestValue := simpleStorage.GetLatest()
58 uassert.Equal(t, tt.expLatestValueString, latestValue.String)
59 uassert.Equal(t, tt.expLatestValueTimeIsZero, latestValue.Time.IsZero())
60
61 historicalValues := simpleStorage.GetHistory()
62 urequire.Equal(t, len(tt.expHistoricalValueStrings), len(historicalValues), "historical values length does not match")
63
64 for i, expValue := range tt.expHistoricalValueStrings {
65 uassert.Equal(t, historicalValues[i].String, expValue)
66 urequire.False(t, historicalValues[i].Time.IsZero(), ufmt.Sprintf("unexpeced zero time for historical value at index %d", i))
67 }
68 })
69 }
70}