...
1 package stringsx
2
3 import (
4 "errors"
5 "testing"
6
7 "github.com/stretchr/testify/assert"
8 )
9
10 func TestRegisteredCases(t *testing.T) {
11 t.Run("case=adds values", func(t *testing.T) {
12 v1, v2 := "value 1", "value 2"
13
14 cs := RegisteredCases{}
15 cs.AddCase(v1)
16 cs.AddCase(v2)
17
18 assert.Equal(t, RegisteredCases{v1, v2}, cs)
19 })
20
21 t.Run("case=returns value on add", func(t *testing.T) {
22 v1, v2 := "value 1", "value 2"
23
24 cs := RegisteredCases{}
25 assert.Equal(t, v1, cs.AddCase(v1))
26 assert.Equal(t, v2, cs.AddCase(v2))
27 })
28
29 t.Run("case=converts to correct error", func(t *testing.T) {
30 c1, c2, actual := "case 1", "case 2", "actual"
31
32 cs := RegisteredCases{}
33 cs.AddCase(c1)
34 cs.AddCase(c2)
35
36 err := cs.ToUnknownCaseErr(actual)
37
38 assert.True(t, errors.Is(err, ErrUnknownCase))
39 assert.Equal(t, errUnknownCase{
40 cases: cs,
41 actual: actual,
42 }, err)
43 })
44
45 t.Run("case=switch integration", func(t *testing.T) {
46 cases := RegisteredCases{}
47 var err error
48
49 switch f := "foo"; f {
50 case cases.AddCase("bar"):
51 case cases.AddCase("baz"):
52 default:
53 err = cases.ToUnknownCaseErr(f)
54 }
55
56 assert.Equal(t, RegisteredCases{"bar", "baz"}, cases)
57 assert.Equal(t, errUnknownCase{
58 cases: cases,
59 actual: "foo",
60 }, err)
61 })
62 }
63
View as plain text