package main

import (
	"testing"
	"time"
)

// TestIzinDosyasiEskiBicim: eski sabit alanli ve diger alanli izin dosyalari yeni bicime tasinir.
func TestIzinDosyasiEskiBicim(t *testing.T) {
	eski := []byte(`{"everythingAra":true,"catiaAc":false,"usbBaglanti":false,"dosyaYonetimiBitis":0,"diger":{"ornek":true}}`)
	y, err := izinDosyasiCoz(eski)
	if err != nil {
		t.Fatal(err)
	}
	if !y.Acik("everythingAra") {
		t.Errorf("everythingAra eski dosyadan tasinmaliydi")
	}
	if !y.Acik("ornek") {
		t.Errorf("diger alanindaki izin tasinmaliydi")
	}
	if y.Acik("catiaAc") || y.Acik("usb") {
		t.Errorf("kapali eski izinler acilmamaliydi")
	}
}

// TestIzinSureliVeKalici: suresi dolan izin kapali, kalici izin acik sayilir.
func TestIzinSureliVeKalici(t *testing.T) {
	var y Izinler
	y.SureliAyarla("gecmis", time.Now().Add(-time.Minute).Unix())
	if y.Acik("gecmis") {
		t.Errorf("suresi dolmus izin acik sayilmamali")
	}
	y.Ayarla("kalici", true)
	if !y.Acik("kalici") {
		t.Errorf("kalici izin acik olmali")
	}
	y.Ayarla("kalici", false)
	if y.Acik("kalici") || !izinSifirMi(Izinler{}) {
		t.Errorf("kapatilan izin kapali olmali")
	}
}
