-
Notifications
You must be signed in to change notification settings - Fork 129
/
Copy pathslice_test.go
126 lines (100 loc) · 2.56 KB
/
slice_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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package cell
import (
"bytes"
"testing"
"github.com/xssnick/tonutils-go/address"
)
func TestLoadCell_LoadAddr(t *testing.T) {
addr := address.MustParseAddr("EQCD39VS5jcptHL8vMjEXrzGaRcCVYto7HUn4bpAOg8xqB2N")
c := BeginCell().MustStoreUInt(1, 3).MustStoreAddr(addr).EndCell().BeginParse()
c.MustLoadUInt(3)
lAddr, err := c.LoadAddr()
if err != nil {
t.Fatal(err)
return
}
if addr.String() != lAddr.String() {
t.Fatal(err)
return
}
}
func TestLoadCell_Loaders(t *testing.T) {
empty := BeginCell().EndCell()
builder := BeginCell().MustStoreRef(empty).MustStoreSlice([]byte{0xFF, 0xFF, 0xFF}, 20).MustStoreAddr(nil)
ref := BeginCell().MustStoreBoolBit(true).MustStoreBuilder(builder).EndCell()
a := BeginCell().
MustStoreUInt(54310, 17).
MustStoreCoins(41282931).
MustStoreMaybeRef(ref).MustStoreMaybeRef(nil).EndCell()
b := a.BeginParse().MustToCell()
if !bytes.Equal(b.Hash(), a.Hash()) {
t.Fatal("hashes diff after serialize")
return
}
c := b.BeginParse()
if c.RefsNum() != 1 || a.RefsNum() != 1 {
t.Fatal("refs num diff")
return
}
if b.BitsSize() != a.BitsSize() {
t.Fatal("bits num diff")
return
}
if b.Dump() != a.Dump() {
t.Fatal("dump diff")
return
}
if c.MustLoadUInt(17) != 54310 {
t.Fatal("uint diff")
return
}
if c.MustLoadCoins() != 41282931 {
t.Fatal("coins diff")
return
}
lr := c.MustLoadMaybeRef()
if lr == nil {
t.Fatal("first maybe ref nil")
return
}
if lr.MustLoadBoolBit() != true {
t.Fatal("first bit of loaded ref not true")
return
}
if lr.MustLoadRef().bitsSz != 0 {
t.Fatal("first ref of loaded ref not empty")
return
}
if bytes.Equal(lr.MustLoadSlice(20), []byte{0xFF, 0xFF, 0x0F}) {
t.Fatal("slice loaded ref not eq")
return
}
if !lr.MustLoadAddr().IsAddrNone() {
t.Fatal("addr in loaded ref not nil")
return
}
if c.MustLoadMaybeRef() != nil {
t.Fatal("second maybe ref not nil")
return
}
}
func TestSlice_LoadBigInt(t *testing.T) {
v := BeginCell().MustStoreInt(-5, 5).EndCell().BeginParse().MustLoadInt(5)
if v != -5 {
t.Fatal("i not -5", v)
return
}
v = BeginCell().MustStoreInt(-53276879, 256).EndCell().BeginParse().MustLoadInt(256)
if v != -53276879 {
t.Fatal("i not -53276879", v)
return
}
}
func TestSlice_Snake(t *testing.T) {
str := "big brown cherry-pick going to hunt your pussy 😃😃😄😇🤪🤪🙁😤😨🖕💅👏☝️👍👃👃👨👩👩🧑👨"
v := BeginCell().MustStoreStringSnake(str).EndCell().BeginParse()
ldStr := v.MustLoadStringSnake()
if str != ldStr {
t.Fatal("str not eq", str, ldStr)
}
}