mirror of
https://github.com/json-iterator/go.git
synced 2025-06-03 22:27:26 +02:00
Merge pull request #106 from cch123/feature-add-int-tests
fix negative number to uint
This commit is contained in:
commit
3829a470ae
@ -1,8 +1,6 @@
|
|||||||
package jsoniter
|
package jsoniter
|
||||||
|
|
||||||
import (
|
import "unsafe"
|
||||||
"unsafe"
|
|
||||||
)
|
|
||||||
|
|
||||||
type numberLazyAny struct {
|
type numberLazyAny struct {
|
||||||
baseAny
|
baseAny
|
||||||
|
@ -99,8 +99,11 @@ func (any *stringAny) ToUint64() uint64 {
|
|||||||
|
|
||||||
startPos := 0
|
startPos := 0
|
||||||
endPos := 0
|
endPos := 0
|
||||||
// uint skip flag, is this correct?
|
|
||||||
if any.val[0] == '+' || any.val[0] == '-' {
|
if any.val[0] == '-' {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
if any.val[0] == '+' {
|
||||||
startPos = 1
|
startPos = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var boolConvertMap = map[string]bool{
|
var boolConvertMap = map[string]bool{
|
||||||
|
"null": false,
|
||||||
"true": true,
|
"true": true,
|
||||||
"false": false,
|
"false": false,
|
||||||
|
|
||||||
|
@ -1,10 +1,51 @@
|
|||||||
package jsoniter
|
package jsoniter
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/json-iterator/go/require"
|
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/json-iterator/go/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var floatConvertMap = map[string]float64{
|
||||||
|
"null": 0,
|
||||||
|
"true": 1,
|
||||||
|
"false": 0,
|
||||||
|
|
||||||
|
`"true"`: 0,
|
||||||
|
`"false"`: 0,
|
||||||
|
|
||||||
|
"123": 123,
|
||||||
|
`"123true"`: 0,
|
||||||
|
|
||||||
|
`"-123true"`: 0,
|
||||||
|
"0": 0,
|
||||||
|
`"0"`: 0,
|
||||||
|
"-1": -1,
|
||||||
|
|
||||||
|
"1.1": 1.1,
|
||||||
|
"0.0": 0,
|
||||||
|
"-1.1": -1.1,
|
||||||
|
`"+1.1"`: 1.1,
|
||||||
|
`""`: 0,
|
||||||
|
"[1,2]": 1,
|
||||||
|
"[]": 0,
|
||||||
|
"{}": 0,
|
||||||
|
`{"abc":1}`: 0,
|
||||||
|
}
|
||||||
|
|
||||||
|
func Test_read_any_to_float(t *testing.T) {
|
||||||
|
should := require.New(t)
|
||||||
|
for k, v := range floatConvertMap {
|
||||||
|
any := Get([]byte(k))
|
||||||
|
should.Equal(float64(v), any.ToFloat64(), "the original val is "+k)
|
||||||
|
}
|
||||||
|
|
||||||
|
for k, v := range floatConvertMap {
|
||||||
|
any := Get([]byte(k))
|
||||||
|
should.Equal(float32(v), any.ToFloat32(), "the original val is "+k)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func Test_read_float_as_any(t *testing.T) {
|
func Test_read_float_as_any(t *testing.T) {
|
||||||
should := require.New(t)
|
should := require.New(t)
|
||||||
any := Get([]byte("12.3"))
|
any := Get([]byte("12.3"))
|
||||||
|
@ -9,10 +9,11 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var intConvertMap = map[string]int{
|
var intConvertMap = map[string]int{
|
||||||
|
"null": 0,
|
||||||
"321.1": 321,
|
"321.1": 321,
|
||||||
"-321.1": -321,
|
"-321.1": -321,
|
||||||
`"1.1"`: 1,
|
`"1.1"`: 1,
|
||||||
`"-1.1"`: -1,
|
`"-321.1"`: -321,
|
||||||
"0.0": 0,
|
"0.0": 0,
|
||||||
"0": 0,
|
"0": 0,
|
||||||
`"0"`: 0,
|
`"0"`: 0,
|
||||||
@ -24,12 +25,14 @@ var intConvertMap = map[string]int{
|
|||||||
`"false"`: 0,
|
`"false"`: 0,
|
||||||
`"true123"`: 0,
|
`"true123"`: 0,
|
||||||
`"123true"`: 123,
|
`"123true"`: 123,
|
||||||
|
`"-123true"`: -123,
|
||||||
`"1.2332e6"`: 1,
|
`"1.2332e6"`: 1,
|
||||||
`""`: 0,
|
`""`: 0,
|
||||||
"+": 0,
|
"+": 0,
|
||||||
"-": 0,
|
"-": 0,
|
||||||
"[]": 0,
|
"[]": 0,
|
||||||
"[1,2]": 1,
|
"[1,2]": 1,
|
||||||
|
`["1","2"]`: 1,
|
||||||
// object in php cannot convert to int
|
// object in php cannot convert to int
|
||||||
"{}": 0,
|
"{}": 0,
|
||||||
}
|
}
|
||||||
@ -58,29 +61,34 @@ func Test_read_any_to_int(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var uintConvertMap = map[string]int{
|
var uintConvertMap = map[string]int{
|
||||||
|
"null": 0,
|
||||||
"321.1": 321,
|
"321.1": 321,
|
||||||
`"1.1"`: 1,
|
`"1.1"`: 1,
|
||||||
`"-1.1"`: 1,
|
`"-123.1"`: 0,
|
||||||
"0.0": 0,
|
"0.0": 0,
|
||||||
"0": 0,
|
"0": 0,
|
||||||
`"0"`: 0,
|
`"0"`: 0,
|
||||||
`"0.0"`: 0,
|
`"0.0"`: 0,
|
||||||
|
`"00.0"`: 0,
|
||||||
"true": 1,
|
"true": 1,
|
||||||
"false": 0,
|
"false": 0,
|
||||||
`"true"`: 0,
|
`"true"`: 0,
|
||||||
`"false"`: 0,
|
`"false"`: 0,
|
||||||
`"true123"`: 0,
|
`"true123"`: 0,
|
||||||
|
`"+1"`: 1,
|
||||||
`"123true"`: 123,
|
`"123true"`: 123,
|
||||||
|
`"-123true"`: 0,
|
||||||
`"1.2332e6"`: 1,
|
`"1.2332e6"`: 1,
|
||||||
`""`: 0,
|
`""`: 0,
|
||||||
"+": 0,
|
"+": 0,
|
||||||
"-": 0,
|
"-": 0,
|
||||||
|
".": 0,
|
||||||
"[]": 0,
|
"[]": 0,
|
||||||
"[1,2]": 1,
|
"[1,2]": 1,
|
||||||
"{}": 0,
|
"{}": 0,
|
||||||
// TODO need to solve
|
"{1,2}": 0,
|
||||||
//"-1.1": 1,
|
"-1.1": 0,
|
||||||
//"-321.1": 321,
|
"-321.1": 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
func Test_read_any_to_uint(t *testing.T) {
|
func Test_read_any_to_uint(t *testing.T) {
|
||||||
@ -98,7 +106,7 @@ func Test_read_any_to_uint(t *testing.T) {
|
|||||||
|
|
||||||
for k, v := range uintConvertMap {
|
for k, v := range uintConvertMap {
|
||||||
any := Get([]byte(k))
|
any := Get([]byte(k))
|
||||||
should.Equal(uint32(v), any.ToUint32(), fmt.Sprintf("origin val %v", k))
|
should.Equal(uint(v), any.ToUint(), fmt.Sprintf("origin val %v", k))
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user