package dialectsfcrm

import "testing"

func TestCurrencyDisplayFormatterUsesSalesforceCompatibleSymbols(t *testing.T) {
	formatter := NewCurrencyDisplayFormatter()
	tests := []struct {
		name     string
		code     string
		value    float64
		expected string
	}{
		{name: "USD", code: "USD", value: 140, expected: "$140.00"},
		{name: "JPY no minor units", code: "JPY", value: 140, expected: "¥140"},
		{name: "CNY", code: "CNY", value: 140, expected: "¥140.00"},
		{name: "SGD", code: "SGD", value: 140, expected: "S$140.00"},
		{name: "grouping", code: "JPY", value: 14000, expected: "¥14,000"},
		{name: "fallback to ISO code", code: "EUR", value: 140, expected: "EUR 140.00"},
		{name: "invalid code", code: "not-a-code", value: 10, expected: "10.00"},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			if got := formatter.FormatCurrencyDisplayValue(tt.value, tt.code); got != tt.expected {
				t.Fatalf("FormatCurrencyDisplayValue(%v, %q) = %q, want %q", tt.value, tt.code, got, tt.expected)
			}
		})
	}
}
