package bittorrent import ( "fmt" "testing" "github.com/stretchr/testify/require" ) func TestNew(t *testing.T) { var table = []struct { data string expected Event expectedErr error }{ {"", None, nil}, {"NONE", None, nil}, {"none", None, nil}, {"started", Started, nil}, {"stopped", Stopped, nil}, {"completed", Completed, nil}, {"notAnEvent", None, ErrUnknownEvent}, } for _, tt := range table { t.Run(fmt.Sprintf("%#v expecting %s", tt.data, nilPrinter(tt.expectedErr)), func(t *testing.T) { got, err := NewEvent(tt.data) require.Equal(t, err, tt.expectedErr, "errors should equal the expected value") require.Equal(t, got, tt.expected, "events should equal the expected value") }) } } func nilPrinter(err error) string { if err == nil { return "nil" } return err.Error() }