package text

import "testing"

// TestFoldTR_TurkceKarakterler "ı" ve "i" ayrımının KAPANDIĞINI kilitler.
// strings.ToLower yeterli DEĞİLDİR: "I"→"i" olur ama "ı"→"ı" kalır.
// Canlı hata 05.10.2026: "Ahmet Yılmaz"a "yilmaz" yazılınca eşleşmiyordu.
func TestFoldTR_TurkceKarakterler(t *testing.T) {
	cases := [][2]string{
		{"Ahmet Yılmaz", "ahmet yilmaz"},
		{"yilmaz", "yilmaz"},
		{"YILMAZ", "yilmaz"},
		{"İstanbul", "istanbul"},
		{"ÇĞÖŞÜ çğöşü", "cgosu cgosu"},
		{"Dolar KURU", "dolar kuru"},
		{"boşluk", "bosluk"}, // ş→s de katlanır
		{"", ""},
	}
	for _, tc := range cases {
		if got := FoldTR(tc[0]); got != tc[1] {
			t.Errorf("FoldTR(%q) = %q, beklenen %q", tc[0], got, tc[1])
		}
	}
}

// Katlama İDEMPOTENT olmalı: iki kez uygulamak aynı sonucu vermeli.
func TestFoldTR_Idempotent(t *testing.T) {
	for _, s := range []string{"Ahmet Yılmaz", "ÇĞÖŞÜ", "İstanbul"} {
		once := FoldTR(s)
		if twice := FoldTR(once); twice != once {
			t.Errorf("katlama idempotent değil: %q → %q → %q", s, once, twice)
		}
	}
}

// Katlama ASİL DEĞİLDİR: yalnız aksan/harf eşlemesidir, metni bozmaz.
func TestFoldTR_MetniBozmaz(t *testing.T) {
	if FoldTR("hello world") != "hello world" {
		t.Error("ASCII metin değişmemeli")
	}
}
