代码拉取完成,页面将自动刷新
package entity
import (
"math"
"testing"
"strconv"
"gopkg.in/mgo.v2/bson"
)
func TestAttrVals(t *testing.T) {
v := uniformAttrType(float32(1.0))
t.Logf("uniformAttrType %v %T", v, v)
v = uniformAttrType(int32(1))
t.Logf("uniformAttrType %v %T", v, v)
}
func TestMapAttr(t *testing.T) {
m := NewMapAttr()
m.AssignMap(map[string]interface{}{
"int": int(1),
"int32": int32(32),
"int64": int64(64),
"float32": float32(32.0),
"float64": float64(64.0),
"bool": true,
"string": "xxx",
"subM": map[string]interface{}{
"a": 1, "b": 2,
"innerM1": map[string]interface{}{
"a": 1, "b": 2,
},
},
"list": []interface{}{1, 2, 3, map[string]interface{}{
"a": 1, "b": 2,
"innerM1": map[string]interface{}{
"a": 1, "b": 2, "l": []interface{}{1, "xxx", false},
},
}},
})
t.Logf("AssignMap: %s", m)
if !m.HasKey("int") {
t.Fatalf("should has key")
}
if m.HasKey("not exist key") {
t.Fatalf("should not has key")
}
if m.GetInt("int") != 1 {
t.Fatalf("wrong value")
}
if m.GetInt("int32") != 32 {
t.Fatalf("wrong value")
}
if m.GetInt("int64") != 64 {
t.Fatalf("wrong value")
}
if m.GetInt("not exist key") != 0 {
t.Fatalf("wrong value")
}
if m.GetBool("bool") != true {
t.Fatalf("wrong value")
}
if m.GetBool("not exist key") != false {
t.Fatalf("wrong value")
}
if m.GetStr("string") != "xxx" {
t.Fatalf("wrong value")
}
if m.GetStr("not exist key") != "" {
t.Fatalf("wrong value")
}
if math.Abs(m.GetFloat("float32")-32.0) >= 0.000001 {
t.Fatalf("wrong value")
}
if math.Abs(m.GetFloat("float64")-64.0) >= 0.000001 {
t.Fatalf("wrong value")
}
if math.Abs(m.GetFloat("not exist key")-0.0) >= 0.000001 {
t.Fatalf("wrong value")
}
sl := m.GetListAttr("list")
t.Logf("list convert to %v", sl)
}
func BenchmarkConvertBsonMToMap(b *testing.B) {
m := bson.M{
"a": 1,
"b": 2,
}
for i := 0; i < 100000; i++ {
m[strconv.Itoa(i)] = i
}
b.ResetTimer()
for i := 0; i < b.N; i++ {
mm := map[string]interface{}(m) // if there is copy here, it will consume a lot of time
mm["a"] = 1
mm["b"] = 1
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。