aboutsummaryrefslogtreecommitdiffstats
path: root/common/big_test.go
blob: 5ce9091ec4c38bb8c6dfc98c87d88e97bd641a59 (plain) (blame)
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
package common

import (
    "database/sql/driver"
    "math/big"
    "reflect"
    "testing"
)

func TestBig_Scan(t *testing.T) {
    type args struct {
        src interface{}
    }
    tests := []struct {
        name    string
        args    args
        value   Big
        wantErr bool
    }{
        {
            name:    "scan int64",
            args:    args{src: int64(-10)},
            value:   Big(*big.NewInt(-10)),
            wantErr: false,
        },
        {
            name:    "scan uint64",
            args:    args{src: uint64(10)},
            value:   Big(*big.NewInt(10)),
            wantErr: false,
        },
        {
            name:    "scan bytes",
            args:    args{src: []byte{0x31, 0x30}},
            value:   Big(*big.NewInt(10)),
            wantErr: false,
        },
        {
            name:    "scan string",
            args:    args{src: "-10"},
            value:   Big(*big.NewInt(-10)),
            wantErr: false,
        },
    }

    for _, tt := range tests {
        t.Run(tt.name, func(t *testing.T) {
            b := &Big{}
            if err := b.Scan(tt.args.src); (err != nil) != tt.wantErr {
                t.Errorf("Big.Scan() error = %v, wantErr %v", err, tt.wantErr)
            }

            if !tt.wantErr {
                if !reflect.DeepEqual(*b, tt.value) {
                    t.Errorf(
                        "Big.Scan() wrong value (got: %v, want: %v)",
                        *b, tt.value,
                    )
                }
            }
        })
    }

}
func TestBig_Value(t *testing.T) {
    r := "12345"
    b := Big(*big.NewInt(12345))
    tests := []struct {
        name    string
        b       Big
        want    driver.Value
        wantErr bool
    }{
        {
            name:    "working value",
            b:       b,
            want:    r,
            wantErr: false,
        },
    }

    for _, tt := range tests {
        t.Run(tt.name, func(t *testing.T) {
            got, err := tt.b.Value()
            if (err != nil) != tt.wantErr {
                t.Errorf("Big.Value() error = %v, wantErr %v", err, tt.wantErr)
                return
            }

            if !reflect.DeepEqual(got, tt.want) {
                t.Errorf("Hash.Value() = %v, want %v", got, tt.want)
            }
        })
    }
}