diff options
| author | Alex Flint <[email protected]> | 2021-08-20 20:20:44 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-08-20 20:20:44 -0700 |
| commit | b3bcd8035e45ea06ee596f0c35144df847c365b6 (patch) | |
| tree | e92b43a0412c9041acea5d55f9313c1886aa082f /scalar_test.go | |
| parent | fd60e966956efb1720cbfbf449fb55971209b2db (diff) | |
| parent | 8ca9e7daec9d2f708016d3b382e0888f59b50828 (diff) | |
Merge pull request #9 from alexflint/improve-coverage
Increase test coverage to 100%
Diffstat (limited to 'scalar_test.go')
| -rw-r--r-- | scalar_test.go | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/scalar_test.go b/scalar_test.go index 737675a..1c51c77 100644 --- a/scalar_test.go +++ b/scalar_test.go @@ -2,6 +2,7 @@ package scalar import ( "net" + "net/mail" "net/url" "reflect" "testing" @@ -72,6 +73,9 @@ func TestParseValue(t *testing.T) { // IP addresses assertParse(t, net.IPv4(1, 2, 3, 4), "1.2.3.4") + // email addresses + assertParse(t, mail.Address{Address: "[email protected]"}, "[email protected]") + // MAC addresses assertParse(t, net.HardwareAddr("\x01\x23\x45\x67\x89\xab"), "01:23:45:67:89:ab") @@ -85,9 +89,73 @@ func TestParseValue(t *testing.T) { assertParse(t, textUnmarshaler{3}, "abc") } +func TestParseErrors(t *testing.T) { + var err error + + // this should fail because the pointer is nil and will not be settable + var p *int + err = ParseValue(reflect.ValueOf(p), "123") + assert.Equal(t, errPtrNotSettable, err) + + // this should fail because the value will not be settable + var v int + err = ParseValue(reflect.ValueOf(v), "123") + assert.Equal(t, errNotSettable, err) + + // this should fail due to a malformed boolean + var b bool + err = ParseValue(reflect.ValueOf(&b), "malformed") + assert.Error(t, err) + + // this should fail due to a malformed boolean + var i int + err = ParseValue(reflect.ValueOf(&i), "malformed") + assert.Error(t, err) + + // this should fail due to a malformed boolean + var u uint + err = ParseValue(reflect.ValueOf(&u), "malformed") + assert.Error(t, err) + + // this should fail due to a malformed boolean + var f float64 + err = ParseValue(reflect.ValueOf(&f), "malformed") + assert.Error(t, err) + + // this should fail due to a malformed time duration + var d time.Duration + err = ParseValue(reflect.ValueOf(&d), "malfomed") + assert.Error(t, err) + + // this should fail due to a malformed email address + var email mail.Address + err = ParseValue(reflect.ValueOf(&email), "malfomed") + assert.Error(t, err) + + // this should fail due to a malformed time duration + var mac net.HardwareAddr + err = ParseValue(reflect.ValueOf(&mac), "malfomed") + assert.Error(t, err) + + // this should fail due to a malformed time duration + var url url.URL + err = ParseValue(reflect.ValueOf(&url), "$:") + assert.Error(t, err) + + // this should fail due to an unsupported type + var x struct{} + err = ParseValue(reflect.ValueOf(&x), "$") + assert.Error(t, err) +} + func TestParse(t *testing.T) { var v int err := Parse(&v, "123") require.NoError(t, err) assert.Equal(t, 123, v) } + +func TestCanParseReturnsFalse(t *testing.T) { + var x struct{} + assert.Equal(t, false, CanParse(reflect.TypeOf(x))) +} |
