github.com/dubbogo/gost@v1.14.0/encoding/yaml/yaml_test.go (about) 1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 package yaml 19 20 import ( 21 "path/filepath" 22 "testing" 23 ) 24 25 import ( 26 "github.com/stretchr/testify/assert" 27 ) 28 29 func TestUnmarshalYMLConfig(t *testing.T) { 30 conPath, err := filepath.Abs("./testdata/config.yml") 31 assert.NoError(t, err) 32 c := &Config{} 33 _, err = UnmarshalYMLConfig(conPath, c) 34 assert.NoError(t, err) 35 assert.Equal(t, "strTest", c.StrTest) 36 assert.Equal(t, 11, c.IntTest) 37 assert.Equal(t, false, c.BooleanTest) 38 assert.Equal(t, "childStrTest", c.ChildConfig.StrTest) 39 } 40 41 func TestUnmarshalYMLConfigError(t *testing.T) { 42 c := &Config{} 43 _, err := UnmarshalYMLConfig("./testdata/config", c) 44 assert.Error(t, err) 45 _, err = UnmarshalYMLConfig("", c) 46 assert.Error(t, err) 47 } 48 49 func TestUnmarshalYML(t *testing.T) { 50 c := &Config{} 51 b, err := LoadYMLConfig("./testdata/config.yml") 52 assert.NoError(t, err) 53 err = UnmarshalYML(b, c) 54 assert.NoError(t, err) 55 assert.Equal(t, "strTest", c.StrTest) 56 assert.Equal(t, 11, c.IntTest) 57 assert.Equal(t, false, c.BooleanTest) 58 assert.Equal(t, "childStrTest", c.ChildConfig.StrTest) 59 } 60 61 type Config struct { 62 StrTest string `yaml:"strTest" default:"default" json:"strTest,omitempty" property:"strTest"` 63 IntTest int `default:"109" yaml:"intTest" json:"intTest,omitempty" property:"intTest"` 64 BooleanTest bool `yaml:"booleanTest" default:"true" json:"booleanTest,omitempty"` 65 ChildConfig ChildConfig `yaml:"child" json:"child,omitempty"` 66 } 67 68 type ChildConfig struct { 69 StrTest string `default:"default" yaml:"strTest" json:"strTest,omitempty"` 70 }