package main

import (
	"sync"
	"testing"
)

// TestSokHazirBayragiEszamanli: bayrak yazma ve okuma kilit altindadir; eszamanli kullanimda
// kilitlenme olmamali ve son yazilan deger okunmalidir. Bayrak profil bazlidir.
func TestSokHazirBayragiEszamanli(t *testing.T) {
	const p = "test-hazir"
	s := soketAl(p)
	s.hazirAyarla(false)
	if s.hazirMi() {
		t.Fatal("baslangicta hazir olmamaliydi")
	}
	s.hazirAyarla(true)
	if !s.hazirMi() {
		t.Fatal("true yazildi, okunamadi")
	}
	s.hazirAyarla(false)
	if s.hazirMi() {
		t.Fatal("false yazildi, okunamadi")
	}

	var wg sync.WaitGroup
	for i := 0; i < 50; i++ {
		wg.Add(2)
		go func(d bool) {
			defer wg.Done()
			s.hazirAyarla(d)
		}(i%2 == 0)
		go func() {
			defer wg.Done()
			_ = s.hazirMi()
		}()
	}
	wg.Wait()
	s.hazirAyarla(false)
}
