#include "fiko/parametre/birim.hpp" #include "fiko_test.hpp" using namespace fiko::parametre; FIKO_TEST(birim_uzunluk_donusum) { FIKO_YAKIN(birimeCevir(25.4, "mm", "in").deger, 1.0, 1e-9); FIKO_YAKIN(birimeCevir(1.0, "in", "mm").deger, 25.4, 1e-9); FIKO_YAKIN(birimeCevir(1.0, "m", "mm").deger, 1000.0, 1e-9); FIKO_YAKIN(birimeCevir(1.0, "ft", "in").deger, 12.0, 1e-6); } FIKO_TEST(birim_aci_donusum) { FIKO_YAKIN(birimeCevir(180.0, "deg", "rad").deger, 3.14159265358979, 1e-9); FIKO_YAKIN(birimeCevir(3.14159265358979, "rad", "deg").deger, 180.0, 1e-6); } FIKO_TEST(birim_kutle_zaman) { FIKO_YAKIN(birimeCevir(1.0, "kg", "g").deger, 1000.0, 1e-9); FIKO_YAKIN(birimeCevir(1.0, "h", "min").deger, 60.0, 1e-9); } FIKO_TEST(birim_uyumsuz_basarisiz) { FIKO_KONTROL(!birimeCevir(1.0, "mm", "deg").basarili); // uzunluk↔açı FIKO_KONTROL(!birimeCevir(1.0, "kg", "s").basarili); // kütle↔zaman FIKO_KONTROL(!birimeCevir(1.0, "mm", "xyz").basarili); // bilinmeyen } FIKO_TEST(birim_ayni_kimlik) { CevirSonuc c = birimeCevir(42.0, "mm", "mm"); FIKO_KONTROL(c.basarili); FIKO_YAKIN(c.deger, 42.0, 1e-12); } FIKO_TEST(birim_bul) { FIKO_KONTROL(birimBul("mm") != nullptr); FIKO_KONTROL(birimBul("mm")->tur == BirimTuru::Uzunluk); FIKO_KONTROL(birimBul("deg")->tur == BirimTuru::Aci); FIKO_KONTROL(birimBul("bilinmeyen") == nullptr); } FIKO_TEST(birim_ayristir) { AyristirSonuc a = birimliAyristir("25.4 mm"); FIKO_KONTROL(a.basarili); FIKO_YAKIN(a.deger, 25.4, 1e-9); FIKO_KONTROL(a.birim == "mm"); AyristirSonuc b = birimliAyristir("90deg"); // boşluksuz FIKO_KONTROL(b.basarili && b.birim == "deg"); FIKO_YAKIN(b.deger, 90.0, 1e-9); AyristirSonuc c = birimliAyristir("-3.5"); // birimsiz FIKO_KONTROL(c.basarili && c.birim.empty()); FIKO_YAKIN(c.deger, -3.5, 1e-9); FIKO_KONTROL(!birimliAyristir("abc").basarili); // baş sayı yok } FIKO_TEST(birim_ayristir_cevir_zincir) { // "1 in" ayrıştır → mm'ye çevir = 25.4 AyristirSonuc a = birimliAyristir("1 in"); CevirSonuc c = birimeCevir(a.deger, a.birim, "mm"); FIKO_KONTROL(c.basarili); FIKO_YAKIN(c.deger, 25.4, 1e-9); }