FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
CovenantSQL/utils/integer_test.go at develop · CovenantSQL/CovenantSQL · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
CovenantSQL
/
CovenantSQL
Public
Notifications
You must be signed in to change notification settings
Fork
146
Star
1.5k
Code
Issues
27
Pull requests
9
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
CovenantSQL
/
utils
/
integer_test.go
Copy path
More file actions
More file actions
Latest commit
History
History
History
117 lines (106 loc) · 2.87 KB
Breadcrumbs
CovenantSQL
/
utils
/
integer_test.go
Copy path
File metadata and controls
117 lines (106 loc) · 2.87 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
// Copyright 2017 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package
utils
import
(
"math"
"testing"
)
type
operation
byte
const
(
sub
operation
=
iota
add
mul
)
func
TestOverflow
(
t
*
testing.
T
) {
for
i
,
test
:=
range
[]
struct
{
x
uint64
y
uint64
overflow
bool
op
operation
}{
// add operations
{
math
.
MaxUint64
,
1
,
true
,
add
},
{
math
.
MaxUint64
-
1
,
1
,
false
,
add
},
// sub operations
{
0
,
1
,
true
,
sub
},
{
0
,
0
,
false
,
sub
},
// mul operations
{
0
,
0
,
false
,
mul
},
{
10
,
10
,
false
,
mul
},
{
math
.
MaxUint64
,
2
,
true
,
mul
},
{
math
.
MaxUint64
,
1
,
false
,
mul
},
} {
var
overflows
bool
switch
test
.
op
{
case
sub
:
_
,
overflows
=
SafeSub
(
test
.
x
,
test
.
y
)
case
add
:
_
,
overflows
=
SafeAdd
(
test
.
x
,
test
.
y
)
case
mul
:
_
,
overflows
=
SafeMul
(
test
.
x
,
test
.
y
)
}
if
test
.
overflow
!=
overflows
{
t
.
Errorf
(
"%d failed. Expected test to be %v, got %v"
,
i
,
test
.
overflow
,
overflows
)
}
}
}
func
TestHexOrDecimal64
(
t
*
testing.
T
) {
tests
:=
[]
struct
{
input
string
num
uint64
ok
bool
}{
{
""
,
0
,
true
},
{
"0"
,
0
,
true
},
{
"0x0"
,
0
,
true
},
{
"12345678"
,
12345678
,
true
},
{
"0x12345678"
,
0x12345678
,
true
},
{
"0X12345678"
,
0x12345678
,
true
},
// Tests for leading zero behaviour:
{
"0123456789"
,
123456789
,
true
},
// note: not octal
{
"0x00"
,
0
,
true
},
{
"0x012345678abc"
,
0x12345678abc
,
true
},
// Invalid syntax:
{
"abcdef"
,
0
,
false
},
{
"0xgg"
,
0
,
false
},
// Doesn't fit into 64 bits:
{
"18446744073709551617"
,
0
,
false
},
}
for
_
,
test
:=
range
tests
{
var
num
HexOrDecimal64
err
:=
num
.
UnmarshalText
([]
byte
(
test
.
input
))
if
(
err
==
nil
)
!=
test
.
ok
{
t
.
Errorf
(
"ParseUint64(%q) -> (err == nil) = %t, want %t"
,
test
.
input
,
err
==
nil
,
test
.
ok
)
continue
}
if
err
==
nil
&&
uint64
(
num
)
!=
test
.
num
{
t
.
Errorf
(
"ParseUint64(%q) -> %d, want %d"
,
test
.
input
,
num
,
test
.
num
)
}
}
}
func
TestMustParseUint64
(
t
*
testing.
T
) {
if
v
:=
MustParseUint64
(
"12345"
);
v
!=
12345
{
t
.
Errorf
(
`MustParseUint64("12345") = %d, want 12345`
,
v
)
}
}
func
TestMustParseUint64Panic
(
t
*
testing.
T
) {
defer
func
() {
if
recover
()
==
nil
{
t
.
Error
(
"MustParseBig should've panicked"
)
}
}()
MustParseUint64
(
"ggg"
)
}
Back
|
FazBrowse Home
|
New Git URL