#include "fiko/cekirdek/cekirdek.hpp" #include "fiko_test.hpp" using namespace fiko; FIKO_TEST(workbench_ilk_eklenen_aktif) { Cekirdek c; FIKO_KONTROL(c.workbenchler().aktif().empty()); c.workbenchler().ekle({"sketcher", "Sketcher", "✎", nullptr, nullptr}); FIKO_KONTROL(c.workbenchler().aktif() == "sketcher"); // ilk eklenen aktif c.workbenchler().ekle({"part", "Part", "◼", nullptr, nullptr}); FIKO_KONTROL(c.workbenchler().aktif() == "sketcher"); // degismedi FIKO_KONTROL(c.workbenchler().hepsi().size() == 2); FIKO_KONTROL(c.workbenchler().bul("part") != nullptr); FIKO_KONTROL(c.workbenchler().bul("yok") == nullptr); } FIKO_TEST(workbench_ayarla_giris_cikis_cagirir) { Cekirdek c; int sketcherGiris = 0, sketcherCikis = 0, partGiris = 0; c.workbenchler().ekle({"sketcher", "Sketcher", "✎", [&](Cekirdek&) { ++sketcherGiris; }, [&](Cekirdek&) { ++sketcherCikis; }}); c.workbenchler().ekle({"part", "Part", "◼", [&](Cekirdek&) { ++partGiris; }, nullptr}); // Aktif "sketcher" (ilk eklenen) ama giris() ekleme aninda cagrilmadi. FIKO_KONTROL(sketcherGiris == 0); c.workbenchler().aktifAyarla(c, "part"); // sketcher cikis + part giris FIKO_KONTROL(sketcherCikis == 1); FIKO_KONTROL(partGiris == 1); FIKO_KONTROL(c.workbenchler().aktif() == "part"); c.workbenchler().aktifAyarla(c, "part"); // zaten aktif — no-op FIKO_KONTROL(partGiris == 1); c.workbenchler().aktifAyarla(c, "yok"); // bilinmeyen — no-op FIKO_KONTROL(c.workbenchler().aktif() == "part"); } FIKO_TEST(workbench_degisti_olay_yayinlanir) { Cekirdek c; int sayac = 0; c.olaylar().abone( [&sayac](const WorkbenchDegisti&) { ++sayac; }); c.workbenchler().ekle({"a", "A", "", nullptr, nullptr}); c.workbenchler().ekle({"b", "B", "", nullptr, nullptr}); c.workbenchler().aktifAyarla(c, "b"); FIKO_KONTROL(sayac == 1); c.workbenchler().aktifAyarla(c, "b"); // no-op, olay yok FIKO_KONTROL(sayac == 1); }