54 lines
1.5 KiB
Go
54 lines
1.5 KiB
Go
package types_test
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"github.com/ollama/ollama/types"
|
|
)
|
|
|
|
func TestNull(t *testing.T) {
|
|
var s types.Null[string]
|
|
if val := s.Value(); val != "" {
|
|
t.Errorf("expected Value to return zero value '', got '%s'", val)
|
|
}
|
|
|
|
if val := s.Value("default"); val != "default" {
|
|
t.Errorf("expected Value to return default value 'default', got '%s'", val)
|
|
}
|
|
|
|
if bts, err := json.Marshal(s); err != nil {
|
|
t.Errorf("unexpected error during MarshalJSON: %v", err)
|
|
} else if want := "null"; string(bts) != want {
|
|
t.Errorf("expected marshaled JSON to be %s, got %s", want, string(bts))
|
|
}
|
|
|
|
s.SetValue("foo")
|
|
if val := s.Value(); val != "foo" {
|
|
t.Errorf("expected Value to return 'foo', got '%s'", val)
|
|
}
|
|
|
|
s = types.NullValue("bar")
|
|
if val := s.Value(); val != "bar" {
|
|
t.Errorf("expected Value to return 'bar', got '%s'", val)
|
|
}
|
|
|
|
if bts, err := json.Marshal(s); err != nil {
|
|
t.Errorf("unexpected error during MarshalJSON: %v", err)
|
|
} else if want := `"bar"`; string(bts) != want {
|
|
t.Errorf("expected marshaled JSON to be %s, got %s", want, string(bts))
|
|
}
|
|
|
|
if err := json.Unmarshal([]byte(`null`), &s); err != nil {
|
|
t.Errorf("unexpected error during UnmarshalJSON: %v", err)
|
|
}
|
|
|
|
if err := json.Unmarshal([]byte(`"baz"`), &s); err != nil {
|
|
t.Errorf("unexpected error during UnmarshalJSON: %v", err)
|
|
}
|
|
|
|
if err := json.Unmarshal([]byte(`1.2345`), &s); err == nil {
|
|
t.Error("expected error during UnmarshalJSON with invalid JSON, got nil")
|
|
}
|
|
}
|