hermez-node/db/utils_test.go
db/utils_test.goRaw
1package db
2
3import (
4 "math/big"
5 "os"
6 "testing"
7
8 "github.com/russross/meddler"
9 "github.com/stretchr/testify/assert"
10 "github.com/stretchr/testify/require"
11)
12
13type foo struct {
14 V int
15}
16
17func TestSliceToSlicePtrs(t *testing.T) {
18 n := 16
19 a := make([]foo, n)
20 for i := 0; i < n; i++ {
21 a[i] = foo{V: i}
22 }
23 b := SliceToSlicePtrs(a).([]*foo)
24 for i := 0; i < len(a); i++ {
25 assert.Equal(t, a[i], *b[i])
26 }
27}
28
29func TestSlicePtrsToSlice(t *testing.T) {
30 n := 16
31 a := make([]*foo, n)
32 for i := 0; i < n; i++ {
33 a[i] = &foo{V: i}
34 }
35 b := SlicePtrsToSlice(a).([]foo)
36 for i := 0; i < len(a); i++ {
37 assert.Equal(t, *a[i], b[i])
38 }
39}
40
41func TestBigInt(t *testing.T) {
42 pass := os.Getenv("POSTGRES_PASS")
43 db, err := InitSQLDB(5432, "localhost", "hermez", pass, "hermez")
44 require.NoError(t, err)
45 defer func() {
46 _, err := db.Exec("DROP TABLE IF EXISTS test_big_int;")
47 require.NoError(t, err)
48 err = db.Close()
49 require.NoError(t, err)
50 }()
51
52 _, err = db.Exec("DROP TABLE IF EXISTS test_big_int;")
53 require.NoError(t, err)
54
55 _, err = db.Exec(`CREATE TABLE test_big_int (
56 item_id SERIAL PRIMARY KEY,
57 value1 DECIMAL(78, 0) NOT NULL,
58 value2 DECIMAL(78, 0),
59 value3 DECIMAL(78, 0)
60 );`)
61 require.NoError(t, err)
62
63 type Entry struct {
64 ItemID int `meddler:"item_id"`
65 Value1 *big.Int `meddler:"value1,bigint"`
66 Value2 *big.Int `meddler:"value2,bigintnull"`
67 Value3 *big.Int `meddler:"value3,bigintnull"`
68 }
69
70 entry := Entry{ItemID: 1, Value1: big.NewInt(1234567890), Value2: big.NewInt(9876543210), Value3: nil}
71 err = meddler.Insert(db, "test_big_int", &entry)
72 require.NoError(t, err)
73
74 var dbEntry Entry
75 err = meddler.QueryRow(db, &dbEntry, "SELECT * FROM test_big_int WHERE item_id = 1;")
76 require.NoError(t, err)
77 assert.Equal(t, entry, dbEntry)
78}