github.com/go-spring/spring-base@v1.1.3/log/field_encoder_test.go (about) 1 /* 2 * Copyright 2012-2019 the original author or authors. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * https://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package log_test 18 19 import ( 20 "bytes" 21 "testing" 22 23 "github.com/go-spring/spring-base/assert" 24 "github.com/go-spring/spring-base/log" 25 ) 26 27 func TestEncoder(t *testing.T) { 28 var ( 29 fields = []log.Field{ 30 31 log.Bool("bool", true), 32 log.Int("int", 1), 33 log.String("string", "abc"), 34 log.Reflect("reflect", map[string]string{"string": "abc"}), 35 36 log.Any("bool_any", true), 37 log.Any("int_any", 1), 38 log.Any("string_any", "abc"), 39 log.Any("reflect_any", map[string]string{"string": "abc"}), 40 41 log.Array("array", log.BoolValue(true), log.StringValue("abc")), 42 log.Object("object", log.Bool("bool", true), log.String("string", "abc")), 43 } 44 buffer = bytes.NewBuffer(nil) 45 ) 46 testcases := []struct { 47 encoder log.Encoder 48 expect string 49 }{ 50 { 51 encoder: log.NewJSONEncoder(buffer), 52 expect: `{"bool":true,"int":1,"string":"abc","reflect":{"string":"abc"},"bool_any":true,"int_any":1,"string_any":"abc","reflect_any":{"string":"abc"},"array":[true,"abc"],"object":{"bool":true,"string":"abc"}}`, 53 }, 54 { 55 encoder: log.NewFlatEncoder(buffer, "||"), 56 expect: `bool=true||int=1||string=abc||reflect={"string":"abc"}||bool_any=true||int_any=1||string_any=abc||reflect_any={"string":"abc"}||array=[true,"abc"]||object={"bool":true,"string":"abc"}`, 57 }, 58 } 59 for _, c := range testcases { 60 buffer.Reset() 61 err := c.encoder.AppendEncoderBegin() 62 if err != nil { 63 t.Fatal(err) 64 } 65 for _, f := range fields { 66 err = c.encoder.AppendKey(f.Key) 67 if err != nil { 68 t.Fatal(err) 69 } 70 err = f.Val.Encode(c.encoder) 71 if err != nil { 72 t.Fatal(err) 73 } 74 } 75 err = c.encoder.AppendEncoderEnd() 76 if err != nil { 77 t.Fatal(err) 78 } 79 assert.Equal(t, buffer.String(), c.expect) 80 } 81 }