#include "fiko/istakip/model.hpp" #include "fiko_test.hpp" using namespace fiko::istakip; using namespace fiko::istakip::istakipproto; static IsKayit ornekKayit() { IsKayit k; k.kimlik = 42; k.tur = "teklif"; k.surum = 7; k.alanlar = {{"musteri", "Akçalı Ltd"}, {"tutar", "12500"}, {"durum", "beklemede"}}; return k; } FIKO_TEST(istakip_kayit_gidis_donus) { const IsKayit k = ornekKayit(); const std::string s = kayitSerialize(k); const char* p = s.data(); IsKayit c; FIKO_KONTROL(kayitCoz(p, p + s.size(), c)); FIKO_KONTROL(c.kimlik == 42 && c.tur == "teklif" && c.surum == 7 && !c.silindi); FIKO_KONTROL(c.alanlar.size() == 3 && c.alanlar[0].second == "Akçalı Ltd"); } FIKO_TEST(istakip_alan_yardimcilari) { IsKayit k = ornekKayit(); FIKO_KONTROL(alanBul(k, "tutar") && std::string(alanBul(k, "tutar")) == "12500"); FIKO_KONTROL(alanBul(k, "yok") == nullptr); alanAta(k, "tutar", "9000"); alanAta(k, ALAN_UST, "5"); FIKO_KONTROL(std::string(alanBul(k, "tutar")) == "9000"); FIKO_KONTROL(k.alanlar.size() == 4); // güncelleme çoğaltmaz, yeni alan eklenir } FIKO_TEST(istakip_yaz_govdesi) { IsKayit taslak = ornekKayit(); taslak.kimlik = 0; // yeni kayıt const std::string s = yazSerialize(111, 3, 6, taslak); uint64_t no = 0, sira = 0, beklenen = 0; IsKayit c; FIKO_KONTROL(yazCoz(s, no, sira, beklenen, c)); FIKO_KONTROL(no == 111 && sira == 3 && beklenen == 6 && c.kimlik == 0 && c.tur == "teklif"); FIKO_KONTROL(!yazCoz("kisa", no, sira, beklenen, c)); // bozuk gövde reddi } FIKO_TEST(istakip_snapshot_govdesi) { std::vector liste = {ornekKayit(), ornekKayit()}; liste[1].kimlik = 43; liste[1].silindi = true; const std::string s = snapshotSerialize(liste, 9, 4, true); std::vector c; uint64_t surum = 0, islenen = 0; bool devam = false; FIKO_KONTROL(snapshotCoz(s, c, surum, islenen, devam)); FIKO_KONTROL(surum == 9 && islenen == 4 && devam && c.size() == 2); FIKO_KONTROL(c[1].kimlik == 43 && c[1].silindi); uint64_t iste = 0, no = 0; FIKO_KONTROL(snapshotIsteCoz(snapshotIsteSerialize(5, 77), iste, no) && iste == 5 && no == 77); } FIKO_TEST(istakip_delta_govdesi) { const std::string s = deltaSerialize(ornekKayit(), 111, 8); IsKayit c; uint64_t no = 0, sira = 0; FIKO_KONTROL(deltaCoz(s, c, no, sira)); FIKO_KONTROL(no == 111 && sira == 8 && c.kimlik == 42); }