From e0e357bcc96b6bee9c4aa7be7fa67bd96234a83d Mon Sep 17 00:00:00 2001 From: "Alexander A. Klimov" Date: Thu, 5 Sep 2024 15:38:00 +0200 Subject: [PATCH] Test types.StateType#UnmarshalJSON() --- pkg/icingadb/types/state_type_test.go | 36 +++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 pkg/icingadb/types/state_type_test.go diff --git a/pkg/icingadb/types/state_type_test.go b/pkg/icingadb/types/state_type_test.go new file mode 100644 index 00000000..574ac32c --- /dev/null +++ b/pkg/icingadb/types/state_type_test.go @@ -0,0 +1,36 @@ +package types + +import ( + "github.com/stretchr/testify/require" + "testing" +) + +func TestStateType_UnmarshalJSON(t *testing.T) { + subtests := []struct { + name string + input string + output StateType + error bool + }{ + {name: "bad-json", input: "bad JSON", error: true}, + {name: "bool", input: "false", error: true}, + {name: "string", input: `"0"`, error: true}, + {name: "negative", input: "-1", error: true}, + {name: "fraction", input: "0.5", error: true}, + {name: "out-of-range", input: "2", error: true}, + {name: "soft", input: "0", output: StateSoft}, + {name: "hard", input: "1", output: StateHard}, + } + + for _, st := range subtests { + t.Run(st.name, func(t *testing.T) { + var s StateType + if err := s.UnmarshalJSON([]byte(st.input)); st.error { + require.Error(t, err) + } else { + require.NoError(t, err) + require.Equal(t, st.output, s) + } + }) + } +}