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  }