go_study/fabric-main/orderer/common/localconfig/flatten_test.go

58 lines
756 B
Go

/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package localconfig
import (
"fmt"
"reflect"
"testing"
"github.com/stretchr/testify/require"
)
type A struct {
s string
}
type B struct {
A A
i int
X string
}
type C struct{}
type D struct {
B B
c *C
}
func (a A) String() string {
return fmt.Sprintf("I'm '%s'", a.s)
}
func TestFlattenStruct(t *testing.T) {
d := &D{
B: B{
A: A{
s: "foo",
},
i: 42,
X: "bar ",
},
c: nil,
}
var x []string
flatten("", &x, reflect.ValueOf(d))
require.Equal(t, 4, len(x), "expect 3 items")
require.Equal(t, x[0], "B.A = I'm 'foo'")
require.Equal(t, x[1], "B.i = 42")
require.Equal(t, x[2], "B.X = \"bar \"")
require.Equal(t, x[3], "c =")
}