85 lines
2.0 KiB
Go
85 lines
2.0 KiB
Go
package emotion
|
|
|
|
import "testing"
|
|
|
|
func TestNewAffection_RejectsBadBounds(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
if _, err := NewAffection(50, 100, 0); err == nil {
|
|
t.Fatal("NewAffection() should error when min > max")
|
|
}
|
|
if _, err := NewAffection(200, 0, 100); err == nil {
|
|
t.Fatal("NewAffection() should error when initial > max")
|
|
}
|
|
if _, err := NewAffection(-1, 0, 100); err == nil {
|
|
t.Fatal("NewAffection() should error when initial < min")
|
|
}
|
|
}
|
|
|
|
func TestAffection_IncreaseAndDecreaseClamp(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
a, err := NewAffection(50, 0, 100)
|
|
if err != nil {
|
|
t.Fatalf("NewAffection() error: %v", err)
|
|
}
|
|
|
|
if got := a.Increase(30); got != 80 {
|
|
t.Fatalf("Increase(30) = %d, want 80", got)
|
|
}
|
|
if got := a.Increase(100); got != 100 {
|
|
t.Fatalf("Increase(100) clamped = %d, want 100", got)
|
|
}
|
|
if got := a.Decrease(40); got != 60 {
|
|
t.Fatalf("Decrease(40) = %d, want 60", got)
|
|
}
|
|
if got := a.Decrease(1000); got != 0 {
|
|
t.Fatalf("Decrease(1000) clamped = %d, want 0", got)
|
|
}
|
|
}
|
|
|
|
func TestAffection_IncreaseIgnoresNonPositiveDelta(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
a, err := NewAffection(50, 0, 100)
|
|
if err != nil {
|
|
t.Fatalf("NewAffection() error: %v", err)
|
|
}
|
|
if got := a.Increase(0); got != 50 {
|
|
t.Fatalf("Increase(0) = %d, want 50", got)
|
|
}
|
|
if got := a.Decrease(-5); got != 50 {
|
|
t.Fatalf("Decrease(-5) = %d, want 50", got)
|
|
}
|
|
}
|
|
|
|
func TestAffection_AdjustSigned(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
a, err := NewAffection(40, 0, 100)
|
|
if err != nil {
|
|
t.Fatalf("NewAffection() error: %v", err)
|
|
}
|
|
|
|
before, after := a.Adjust(30)
|
|
if before != 40 || after != 70 {
|
|
t.Fatalf("Adjust(+30) before/after = %d/%d, want 40/70", before, after)
|
|
}
|
|
before, after = a.Adjust(-100)
|
|
if before != 70 || after != 0 {
|
|
t.Fatalf("Adjust(-100) before/after = %d/%d, want 70/0", before, after)
|
|
}
|
|
}
|
|
|
|
func TestAffection_BoundsReported(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
a, err := NewAffection(10, 0, 200)
|
|
if err != nil {
|
|
t.Fatalf("NewAffection() error: %v", err)
|
|
}
|
|
if a.Min() != 0 || a.Max() != 200 {
|
|
t.Fatalf("Min/Max = %d/%d, want 0/200", a.Min(), a.Max())
|
|
}
|
|
}
|