33 lines
997 B
Go
33 lines
997 B
Go
package credentialweight
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
)
|
|
|
|
func TestParseValueValidation(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
value any
|
|
want int64
|
|
wantErr bool
|
|
}{
|
|
{name: "default string", value: "", want: Default},
|
|
{name: "negative excluded", value: json.Number("-5"), want: 0},
|
|
{name: "fraction rejected", value: json.Number("1.5"), wantErr: true},
|
|
{name: "maximum", value: json.Number("1000000"), want: Max},
|
|
{name: "above maximum", value: json.Number("1000001"), wantErr: true},
|
|
{name: "int64 overflow", value: json.Number("9223372036854775808"), wantErr: true},
|
|
}
|
|
for _, test := range tests {
|
|
t.Run(test.name, func(t *testing.T) {
|
|
got, errParse := ParseValue(test.value)
|
|
if (errParse != nil) != test.wantErr {
|
|
t.Fatalf("ParseValue(%v) error = %v, wantErr=%v", test.value, errParse, test.wantErr)
|
|
}
|
|
if !test.wantErr && got != test.want {
|
|
t.Fatalf("ParseValue(%v) = %d, want %d", test.value, got, test.want)
|
|
}
|
|
})
|
|
}
|
|
}
|