From 0395d763d6078ddc37deb275c18ce16da79db11f Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Mon, 2 Mar 2020 21:56:05 +0100 Subject: [PATCH] test json invalid boolean primitives ; only valid when wrapped --- internal/reqdata/parameter_test.go | 40 ++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/internal/reqdata/parameter_test.go b/internal/reqdata/parameter_test.go index ea5b328..38b3419 100644 --- a/internal/reqdata/parameter_test.go +++ b/internal/reqdata/parameter_test.go @@ -30,6 +30,7 @@ func TestSimpleString(t *testing.T) { t.FailNow() } } + func TestStringSlice(t *testing.T) { p := Parameter{Parsed: false, File: false, Value: `["str1", "str2"]`} @@ -73,3 +74,42 @@ func TestStringSlice(t *testing.T) { } } + +func TestJsonPrimitiveBool(t *testing.T) { + tcases := []struct { + Raw string + BoolValue bool + }{ + {"true", true}, + {"false", false}, + } + + for i, tcase := range tcases { + t.Run("case "+string(i), func(t *testing.T) { + p := Parameter{Parsed: false, File: false, Value: tcase.Raw} + + err := p.Parse() + if err != nil { + t.Errorf("unexpected error: <%s>", err) + t.FailNow() + } + + if !p.Parsed { + t.Errorf("expected parameter to be parsed") + t.FailNow() + } + + cast, canCast := p.Value.(bool) + if !canCast { + t.Errorf("expected parameter to be a bool") + t.FailNow() + } + + if cast != tcase.BoolValue { + t.Errorf("expected a value of %T, got %T", tcase.BoolValue, cast) + t.FailNow() + } + }) + } + +}