//go:build windows

package main

import (
	"encoding/base64"
	"encoding/json"
	"os"
	"strings"
	"testing"
)

// Gercek bir dosyanin Shell simgesi PNG olarak donmeli; ayni uzanti ikinci kez onbellekten gelmeli.
func TestSimgeGercek(t *testing.T) {
	yol := `C:\Windows\win.ini`
	if _, err := os.Stat(yol); err != nil {
		t.Skip("win.ini yok")
	}
	cikis, err := comBaslat()
	if err != nil {
		t.Fatalf("com: %v", err)
	}
	defer cikis()
	s := simgeAl(yol, ".ini", true)
	if !strings.HasPrefix(s, "data:image/png;base64,") {
		t.Fatalf("simge alinamadi: %.40q", s)
	}
	if simgeAl(yol, ".ini", true) != s {
		t.Fatal("onbellek ayni simgeyi vermeli")
	}
	// Gorsel kontrol icin: FIKOYT_SIMGE_DUMP ayarliysa simgeyi PNG olarak yaz.
	if hedef := os.Getenv("FIKOYT_SIMGE_DUMP"); hedef != "" {
		ham, _ := base64.StdEncoding.DecodeString(strings.TrimPrefix(s, "data:image/png;base64,"))
		_ = os.WriteFile(hedef, ham, 0o644)
	}
}

// Ayar kapaliyken simge eklenmemeli; acikken sonuca "simge" alani eklenmeli.
func TestSimgeleriEkleAyar(t *testing.T) {
	veri := json.RawMessage(`{"totalResults":1,"results":[{"type":"file","name":"win.ini","path":"C:\\Windows"}]}`)
	if simgeAcik(json.RawMessage(`{"simgeGoster":false}`)) {
		t.Fatal("kapali ayar acik gorunmemeli")
	}
	if !simgeAcik(json.RawMessage(`{"simgeGoster":true}`)) {
		t.Fatal("acik ayar acik gorunmeli")
	}
	if _, err := os.Stat(`C:\Windows\win.ini`); err != nil {
		t.Skip("win.ini yok")
	}
	out := simgeleriEkle(veri)
	if !strings.Contains(string(out), `"simge"`) {
		t.Fatalf("simge alani eklenmedi: %s", out)
	}
}
