mirror of
https://github.com/asticode/go-astikit.git
synced 2025-12-24 11:50:53 +08:00
56 lines
1.2 KiB
Go
56 lines
1.2 KiB
Go
package astikit
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestRational(t *testing.T) {
|
|
r := &Rational{}
|
|
err := r.UnmarshalText([]byte(""))
|
|
if err != nil {
|
|
t.Fatalf("expected no error, got %+v", err)
|
|
}
|
|
if e, g := 0.0, r.ToFloat64(); e != g {
|
|
t.Fatalf("expected %+v, got %+v", e, g)
|
|
}
|
|
err = r.UnmarshalText([]byte("test"))
|
|
if err == nil {
|
|
t.Fatal("expected error, got nil")
|
|
}
|
|
err = r.UnmarshalText([]byte("1/test"))
|
|
if err == nil {
|
|
t.Fatal("expected error, got nil")
|
|
}
|
|
err = r.UnmarshalText([]byte("0"))
|
|
if err != nil {
|
|
t.Fatalf("expected no error, got %+v", err)
|
|
}
|
|
if e, g := 0, r.Num(); e != g {
|
|
t.Fatalf("expected %+v, got %+v", e, g)
|
|
}
|
|
if e, g := 1, r.Den(); e != g {
|
|
t.Fatalf("expected %+v, got %+v", e, g)
|
|
}
|
|
err = r.UnmarshalText([]byte("1/2"))
|
|
if err != nil {
|
|
t.Fatalf("expected no error, got %+v", err)
|
|
}
|
|
if e, g := 1, r.Num(); e != g {
|
|
t.Fatalf("expected %+v, got %+v", e, g)
|
|
}
|
|
if e, g := 2, r.Den(); e != g {
|
|
t.Fatalf("expected %+v, got %+v", e, g)
|
|
}
|
|
if e, g := 0.5, r.ToFloat64(); e != g {
|
|
t.Fatalf("expected %+v, got %+v", e, g)
|
|
}
|
|
r = NewRational(1, 2)
|
|
b, err := r.MarshalText()
|
|
if err != nil {
|
|
t.Fatalf("expected no error, got %+v", err)
|
|
}
|
|
if e, g := "1/2", string(b); e != g {
|
|
t.Fatalf("expected %s, got %s", e, g)
|
|
}
|
|
}
|