package validator

import (
	"testing"

	"github.com/nexuscrm/kernel/pkg/schemautil"
)

func TestRangeValidatorEnforcesExactDecimalWithoutFloatRoundTrip(t *testing.T) {
	registry := &Registry{validators: make(map[string]ValidatorFunc)}
	registry.registerBuiltins()
	config := map[string]interface{}{"min": 0.0, "max": 0.1}

	for _, value := range []schemautil.ExactDecimal{"0", "0.1"} {
		if err := registry.Validate("range", value, config); err != nil {
			t.Fatalf("Validate(range, %q) error = %v, want exact bound accepted", value, err)
		}
	}
	for _, value := range []schemautil.ExactDecimal{"-0.000000000000000001", "0.100000000000000001"} {
		if err := registry.Validate("range", value, config); err == nil {
			t.Fatalf("Validate(range, %q) error = nil, want exact bound enforced", value)
		}
	}
	if err := registry.Validate("range", schemautil.ExactDecimal("not-a-decimal"), config); err == nil {
		t.Fatal("Validate(range, malformed ExactDecimal) error = nil, want fail closed")
	}
}
