package calc import ( "errors" "testing" ) func TestNewEngine_DefaultsToDEC(t *testing.T) { e := NewEngine() if e.CurrentBase() != BaseDEC { t.Errorf("expected DEC, got %s", e.CurrentBase()) } if !e.IsInteger() { t.Error("0 should be integer") } } func TestCycleBase_IntegerOK(t *testing.T) { e := NewEngine() e.value = 42 // integer if err := e.CycleBase(); err != nil { t.Fatalf("unexpected error cycling from integer: %v", err) } if e.CurrentBase() != BaseHEX { t.Errorf("expected HEX after one cycle, got %s", e.CurrentBase()) } } func TestCycleBase_FractionalCERR(t *testing.T) { e := NewEngine() e.value = 23.0 / 6.0 // 3.8333... err := e.CycleBase() if !errors.Is(err, ErrConversionNotPossible) { t.Fatalf("expected ErrConversionNotPossible, got %v", err) } if e.CurrentBase() != BaseDEC { t.Error("base must not change on CERR") } } // TODO (phase 2): more tests for FormatForDisplay (hex/bin/oct of integers), // ops, clears, entry, combined fractional + multiple BASE presses, etc.