See More

#include #include #include #include #include #include #include using LCompilers::TRY; using LCompilers::string_to_uint64; using LCompilers::uint64_to_string; using LCompilers::string_to_uint32; using LCompilers::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(LCompilers::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(LCompilers::ASRUtils::order_deps(deps) == std::vector<:string>( {"module_b", "module_a", "module_d", "module_c"})); }