// Copyright GoFrame Author(https://goframe.org). All Rights Reserved. // // This Source Code Form is subject to the terms of the MIT License. // If a copy of the MIT was not distributed with this file, // You can obtain one at https://github.com/gogf/gf. package gmeta_test import ( "github.com/gogf/gf/internal/json" "github.com/gogf/gf/util/gmeta" "testing" "github.com/gogf/gf/test/gtest" ) type A struct { gmeta.Meta `tag:"123" orm:"456"` Id int Name string } var ( a1 A a2 *A ) func Benchmark_Data_Struct(b *testing.B) { for i := 0; i < b.N; i++ { gmeta.Data(a1) } } func Benchmark_Data_Pointer1(b *testing.B) { for i := 0; i < b.N; i++ { gmeta.Data(a2) } } func Benchmark_Data_Pointer2(b *testing.B) { for i := 0; i < b.N; i++ { gmeta.Data(&a2) } } func Benchmark_Data_Get_Struct(b *testing.B) { for i := 0; i < b.N; i++ { gmeta.Get(a1, "tag") } } func Benchmark_Data_Get_Pointer1(b *testing.B) { for i := 0; i < b.N; i++ { gmeta.Get(a2, "tag") } } func Benchmark_Data_Get_Pointer2(b *testing.B) { for i := 0; i < b.N; i++ { gmeta.Get(&a2, "tag") } } func TestMeta_Basic(t *testing.T) { gtest.C(t, func(t *gtest.T) { a := &A{ Id: 100, Name: "john", } t.Assert(len(gmeta.Data(a)), 2) t.Assert(gmeta.Get(a, "tag").String(), "123") t.Assert(gmeta.Get(a, "orm").String(), "456") b, err := json.Marshal(a) t.AssertNil(err) t.Assert(b, `{"Id":100,"Name":"john"}`) }) }