package fs import ( "fmt" "testing" "github.com/stretchr/testify/assert" ) func TestStatePush(t *testing.T) { assert.Equal(t, "", StatePush("")) assert.Equal(t, "", StatePush("", "")) assert.Equal(t, "a", StatePush("", "a")) assert.Equal(t, "a,1,2,3", StatePush("", "a", "1,2,3")) assert.Equal(t, "potato", StatePush("potato")) assert.Equal(t, ",potato", StatePush("potato", "")) assert.Equal(t, "a,potato", StatePush("potato", "a")) assert.Equal(t, "a,1,2,3,potato", StatePush("potato", "a", "1,2,3")) } func TestStatePop(t *testing.T) { state, value := StatePop("") assert.Equal(t, "", value) assert.Equal(t, "", state) state, value = StatePop("a") assert.Equal(t, "a", value) assert.Equal(t, "", state) state, value = StatePop("a,1,2,3") assert.Equal(t, "a", value) assert.Equal(t, "1,2,3", state) state, value = StatePop("1,2,3,a") assert.Equal(t, "1,2,3", value) assert.Equal(t, "a", state) } func TestMatchProvider(t *testing.T) { for _, test := range []struct { config string provider string want bool }{ {"", "", true}, {"one", "one", true}, {"one,two", "two", true}, {"one,two,three", "two", true}, {"one", "on", false}, {"one,two,three", "tw", false}, {"!one,two,three", "two", false}, {"!one,two,three", "four", true}, } { what := fmt.Sprintf("%q,%q", test.config, test.provider) got := MatchProvider(test.config, test.provider) assert.Equal(t, test.want, got, what) } }