#include "fiko/analiz/dfm.hpp" #include "fiko_test.hpp" using namespace fiko::analiz; namespace { DfmBulgu b(DfmSiddet s, const char* tur = "x") { return {tur, "", s, 0, 0}; } } // namespace FIKO_TEST(dfm_bos_gecer) { DfmRapor r = dfmRaporla({}); FIKO_KONTROL(r.puan == 100); FIKO_KONTROL(r.gecti); FIKO_KONTROL(r.kritikSayisi == 0 && r.uyariSayisi == 0 && r.bilgiSayisi == 0); } FIKO_TEST(dfm_sayim_siddete_gore) { DfmRapor r = dfmRaporla({b(DfmSiddet::Kritik), b(DfmSiddet::Uyari), b(DfmSiddet::Uyari), b(DfmSiddet::Bilgi)}); FIKO_KONTROL(r.kritikSayisi == 1); FIKO_KONTROL(r.uyariSayisi == 2); FIKO_KONTROL(r.bilgiSayisi == 1); } FIKO_TEST(dfm_kritik_kalir) { DfmRapor r = dfmRaporla({b(DfmSiddet::Kritik)}); FIKO_KONTROL(!r.gecti); // kritik → kalır FIKO_KONTROL(r.puan == 80); // 100 − 20 } FIKO_TEST(dfm_sadece_uyari_gecer) { DfmRapor r = dfmRaporla({b(DfmSiddet::Uyari), b(DfmSiddet::Uyari)}); FIKO_KONTROL(r.gecti); // kritik yok → geçer FIKO_KONTROL(r.puan == 90); // 100 − 2·5 } FIKO_TEST(dfm_puan_sifira_klamp) { // 6 kritik → 100 − 120 = −20 → 0'a klamp. DfmRapor r = dfmRaporla(std::vector(6, b(DfmSiddet::Kritik))); FIKO_KONTROL(r.puan == 0); FIKO_KONTROL(!r.gecti); } FIKO_TEST(dfm_siddet_azalan_sirali) { DfmRapor r = dfmRaporla({b(DfmSiddet::Bilgi, "b"), b(DfmSiddet::Kritik, "k"), b(DfmSiddet::Uyari, "u")}); FIKO_KONTROL(r.bulgular.size() == 3); FIKO_KONTROL(r.bulgular[0].siddet == DfmSiddet::Kritik); FIKO_KONTROL(r.bulgular[1].siddet == DfmSiddet::Uyari); FIKO_KONTROL(r.bulgular[2].siddet == DfmSiddet::Bilgi); } FIKO_TEST(dfm_ayni_siddet_kararli) { DfmRapor r = dfmRaporla({b(DfmSiddet::Uyari, "ilk"), b(DfmSiddet::Uyari, "ikinci")}); FIKO_KONTROL(r.bulgular[0].tur == "ilk"); // kararlı: girdi sırası korunur FIKO_KONTROL(r.bulgular[1].tur == "ikinci"); }