package main

import (
	"sync"
	"testing"
)

// TestSokHazirBayragiEszamanli: bayrak yazma ve okuma kilit altindadir; eszamanli kullanimda
// kilitlenme olmamali ve son yazilan deger okunmalidir.
func TestSokHazirBayragiEszamanli(t *testing.T) {
	sokHazirAyarla(false)
	if sokHazirMi() {
		t.Fatal("baslangicta hazir olmamaliydi")
	}
	sokHazirAyarla(true)
	if !sokHazirMi() {
		t.Fatal("true yazildi, okunamadi")
	}
	sokHazirAyarla(false)
	if sokHazirMi() {
		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()
			sokHazirAyarla(d)
		}(i%2 == 0)
		go func() {
			defer wg.Done()
			_ = sokHazirMi()
		}()
	}
	wg.Wait()
	sokHazirAyarla(false)
}
