github.com/aavshr/aws-sdk-go@v1.41.3/private/protocol/jsonvalue_test.go (about) 1 package protocol 2 3 import ( 4 "fmt" 5 "reflect" 6 "strings" 7 "testing" 8 9 "github.com/aavshr/aws-sdk-go/aws" 10 ) 11 12 var testJSONValueCases = []struct { 13 Value aws.JSONValue 14 Mode EscapeMode 15 String string 16 }{ 17 { 18 Value: aws.JSONValue{ 19 "abc": 123., 20 }, 21 Mode: NoEscape, 22 String: `{"abc":123}`, 23 }, 24 { 25 Value: aws.JSONValue{ 26 "abc": 123., 27 }, 28 Mode: Base64Escape, 29 String: `eyJhYmMiOjEyM30=`, 30 }, 31 { 32 Value: aws.JSONValue{ 33 "abc": 123., 34 }, 35 Mode: QuotedEscape, 36 String: `"{\"abc\":123}"`, 37 }, 38 } 39 40 func TestEncodeJSONValue(t *testing.T) { 41 for i, c := range testJSONValueCases { 42 str, err := EncodeJSONValue(c.Value, c.Mode) 43 if err != nil { 44 t.Fatalf("%d, expect no error, got %v", i, err) 45 } 46 if e, a := c.String, str; e != a { 47 t.Errorf("%d, expect %v encoded value, got %v", i, e, a) 48 } 49 } 50 } 51 52 func TestDecodeJSONValue(t *testing.T) { 53 for i, c := range testJSONValueCases { 54 val, err := DecodeJSONValue(c.String, c.Mode) 55 if err != nil { 56 t.Fatalf("%d, expect no error, got %v", i, err) 57 } 58 if e, a := c.Value, val; !reflect.DeepEqual(e, a) { 59 t.Errorf("%d, expect %v encoded value, got %v", i, e, a) 60 } 61 } 62 } 63 64 func TestEncodeJSONValue_PanicUnkownMode(t *testing.T) { 65 defer func() { 66 if r := recover(); r == nil { 67 t.Errorf("expect panic, got none") 68 } else { 69 reason := fmt.Sprintf("%v", r) 70 if e, a := "unknown EscapeMode", reason; !strings.Contains(a, e) { 71 t.Errorf("expect %q to be in %v", e, a) 72 } 73 } 74 }() 75 76 val := aws.JSONValue{} 77 78 EncodeJSONValue(val, 123456) 79 } 80 func TestDecodeJSONValue_PanicUnkownMode(t *testing.T) { 81 defer func() { 82 if r := recover(); r == nil { 83 t.Errorf("expect panic, got none") 84 } else { 85 reason := fmt.Sprintf("%v", r) 86 if e, a := "unknown EscapeMode", reason; !strings.Contains(a, e) { 87 t.Errorf("expect %q to be in %v", e, a) 88 } 89 } 90 }() 91 92 DecodeJSONValue(`{"abc":123}`, 123456) 93 }