Просмотр исходного кода

Merge pull request #104 from cch123/feature-add-bool-convert-test

add bool convert test map
Tao Wen 8 лет назад
Родитель
Сommit
f0b07a2313
4 измененных файлов с 40 добавлено и 9 удалено
  1. 1 3
      feature_any_object.go
  2. 1 1
      feature_any_string.go
  3. 35 3
      jsoniter_any_bool_test.go
  4. 3 2
      jsoniter_any_string_test.go

+ 1 - 3
feature_any_object.go

@@ -25,9 +25,7 @@ func (any *objectLazyAny) LastError() error {
 }
 
 func (any *objectLazyAny) ToBool() bool {
-	iter := any.cfg.BorrowIterator(any.buf)
-	defer any.cfg.ReturnIterator(iter)
-	return iter.ReadObject() != ""
+	return true
 }
 
 func (any *objectLazyAny) ToInt() int {

+ 1 - 1
feature_any_string.go

@@ -35,7 +35,7 @@ func (any *stringAny) LastError() error {
 
 func (any *stringAny) ToBool() bool {
 	str := any.ToString()
-	if str == "false" {
+	if str == "0" {
 		return false
 	}
 	for _, c := range str {

+ 35 - 3
jsoniter_any_bool_test.go

@@ -1,12 +1,44 @@
 package jsoniter
 
 import (
-	"github.com/json-iterator/go/require"
+	"fmt"
 	"testing"
+
+	"github.com/json-iterator/go/require"
 )
 
+var boolConvertMap = map[string]bool{
+	"true":  true,
+	"false": false,
+
+	`"true"`:  true,
+	`"false"`: true,
+
+	"123": true,
+	"0":   false,
+	`"0"`: false,
+	"-1":  true,
+
+	"1.1":       true,
+	"0.0":       false,
+	"-1.1":      true,
+	`""`:        false,
+	"[1,2]":     true,
+	"[]":        false,
+	"{}":        true,
+	`{"abc":1}`: true,
+}
+
 func Test_read_bool_as_any(t *testing.T) {
 	should := require.New(t)
-	any := Get([]byte("true"))
-	should.True(any.ToBool())
+
+	var any Any
+	for k, v := range boolConvertMap {
+		any = Get([]byte(k))
+		if v {
+			should.True(any.ToBool(), fmt.Sprintf("origin val is %v", k))
+		} else {
+			should.False(any.ToBool(), fmt.Sprintf("origin val is %v", k))
+		}
+	}
 }

+ 3 - 2
jsoniter_any_string_test.go

@@ -1,8 +1,9 @@
 package jsoniter
 
 import (
-	"github.com/json-iterator/go/require"
 	"testing"
+
+	"github.com/json-iterator/go/require"
 )
 
 func Test_read_string_as_any(t *testing.T) {
@@ -13,7 +14,7 @@ func Test_read_string_as_any(t *testing.T) {
 	any = Get([]byte(`" "`))
 	should.False(any.ToBool())
 	any = Get([]byte(`"false"`))
-	should.False(any.ToBool())
+	should.True(any.ToBool())
 	any = Get([]byte(`"123"`))
 	should.Equal(123, any.ToInt())
 }