#include "fiko/parametre/tasarim_tablosu.hpp" #include "fiko_test.hpp" using namespace fiko; using namespace fiko::parametre; FIKO_TEST(tasarim_konfig_degistirir) { ParametreDeposu d; d.ayarla("genislik", "10"); d.ayarla("alan", "genislik * 2"); TasarimTablosu t; t.ekle({"Kucuk", {{"genislik", "10"}}}); t.ekle({"Buyuk", {{"genislik", "20"}}}); f64 v = 0; FIKO_KONTROL(t.uygula("Kucuk", d)); FIKO_KONTROL(d.deger("alan", v) && v == 20.0); FIKO_KONTROL(t.aktif() == "Kucuk"); FIKO_KONTROL(t.uygula("Buyuk", d)); FIKO_KONTROL(d.deger("alan", v) && v == 40.0); // yeni konfig → yeniden çözüm FIKO_KONTROL(t.aktif() == "Buyuk"); } FIKO_TEST(tasarim_coklu_parametre) { ParametreDeposu d; d.ayarla("en", "1"); d.ayarla("boy", "1"); d.ayarla("hacim", "en * boy * 5"); TasarimTablosu t; t.ekle({"A", {{"en", "2"}, {"boy", "3"}}}); FIKO_KONTROL(t.uygula("A", d)); f64 v = 0; FIKO_KONTROL(d.deger("hacim", v) && v == 30.0); // 2*3*5 } FIKO_TEST(tasarim_konfig_disi_param_korunur) { ParametreDeposu d; d.ayarla("a", "7"); // hiçbir konfigde yok d.ayarla("b", "1"); TasarimTablosu t; t.ekle({"K", {{"b", "9"}}}); FIKO_KONTROL(t.uygula("K", d)); f64 v = 0; FIKO_KONTROL(d.deger("a", v) && v == 7.0); // konfig dışı → base korunur FIKO_KONTROL(d.deger("b", v) && v == 9.0); } FIKO_TEST(tasarim_yok_konfig_false) { ParametreDeposu d; d.ayarla("x", "1"); TasarimTablosu t; FIKO_KONTROL(!t.uygula("yok", d)); FIKO_KONTROL(t.aktif().empty()); } FIKO_TEST(tasarim_ekle_guncelle_sil) { TasarimTablosu t; t.ekle({"A", {{"x", "1"}}}); t.ekle({"A", {{"x", "2"}}}); // aynı ad → günceller FIKO_KONTROL(t.sayi() == 1); FIKO_KONTROL(t.bul("A")->degerler.at("x") == "2"); t.sil("A"); FIKO_KONTROL(t.sayi() == 0); FIKO_KONTROL(t.bul("A") == nullptr); }