package expression

import "testing"

func BenchmarkCalendarPrimitiveTargetClamp(b *testing.B) {
	engine := NewEngine()
	const formula = `__DATE_ADD_MONTHS_TARGET_CLAMP__(StartDate, Months)`
	env := map[string]interface{}{"StartDate": "2023-01-31", "Months": 13}
	if _, err := engine.Evaluate(formula, env); err != nil {
		b.Fatal(err)
	}
	b.ReportAllocs()
	b.ResetTimer()
	for i := 0; i < b.N; i++ {
		if _, err := engine.Evaluate(formula, env); err != nil {
			b.Fatal(err)
		}
	}
}

func BenchmarkCalendarPrimitiveDayDifference(b *testing.B) {
	engine := NewEngine()
	const formula = `__DATE_DIFF_DAYS__(EndDate, StartDate)`
	env := map[string]interface{}{"StartDate": "2023-01-31", "EndDate": "2024-02-29"}
	if _, err := engine.Evaluate(formula, env); err != nil {
		b.Fatal(err)
	}
	b.ReportAllocs()
	b.ResetTimer()
	for i := 0; i < b.N; i++ {
		if _, err := engine.Evaluate(formula, env); err != nil {
			b.Fatal(err)
		}
	}
}
