See More

#include #include #include #include #include #include #include using LFortran::TRY; using LFortran::string_to_uint64; using LFortran::uint64_to_string; using LFortran::string_to_uint32; using LFortran::uint32_to_string; TEST_CASE("Integer conversion") { uint64_t i; i = 1; CHECK(string_to_uint32(uint32_to_string(i)) == i); CHECK(string_to_uint64(uint64_to_string(i)) == i); i = 150; CHECK(string_to_uint32(uint32_to_string(i)) == i); CHECK(string_to_uint64(uint64_to_string(i)) == i); i = 256; CHECK(string_to_uint32(uint32_to_string(i)) == i); CHECK(string_to_uint64(uint64_to_string(i)) == i); i = 65537; CHECK(string_to_uint32(uint32_to_string(i)) == i); CHECK(string_to_uint64(uint64_to_string(i)) == i); i = 16777217; CHECK(string_to_uint32(uint32_to_string(i)) == i); CHECK(string_to_uint64(uint64_to_string(i)) == i); i = 4294967295LU; CHECK(string_to_uint32(uint32_to_string(i)) == i); CHECK(string_to_uint64(uint64_to_string(i)) == i); i = 4294967296LU; CHECK(string_to_uint32(uint32_to_string(i)) != i); CHECK(string_to_uint64(uint64_to_string(i)) == i); i = 18446744073709551615LLU; CHECK(string_to_uint32(uint32_to_string(i)) != i); CHECK(string_to_uint64(uint64_to_string(i)) == i); } TEST_CASE("Topological sorting string") { std::map<:string std::vector>> deps; // A depends on B deps["A"].push_back("B"); // C depends on A, etc. deps["C"].push_back("A"); deps["B"].push_back("D"); deps["C"].push_back("D"); CHECK(LFortran::ASRUtils::order_deps(deps) == std::vector<:string>( {"D", "B", "A", "C"})); deps.clear(); deps["module_a"].push_back("module_b"); deps["module_c"].push_back("module_a"); deps["module_c"].push_back("module_d"); deps["module_d"].push_back("module_a"); CHECK(LFortran::ASRUtils::order_deps(deps) == std::vector<:string>( {"module_b", "module_a", "module_d", "module_c"})); }