#include #include #include #include "scan.hpp" namespace { std::filesystem::path test_data_path(const std::string &filename) { const auto here = std::filesystem::path(__FILE__).parent_path(); return here.parent_path() / "data" / filename; } TEST(Scan, ReadsAllSupportedTypes) { std::ifstream input(test_data_path("test-scan-1.txt")); ASSERT_TRUE(input.is_open()); const auto result = wavefront::scan(input); EXPECT_EQ(result.total_lines, 26u); EXPECT_EQ(result.line_data.size(), 21u); EXPECT_TRUE(result.category_map.contains("v")); EXPECT_TRUE(result.category_map.contains("vn")); EXPECT_TRUE(result.category_map.contains("vt")); EXPECT_TRUE(result.category_map.contains("f")); EXPECT_EQ(result.category_map.at("v").size(), 10u); EXPECT_EQ(result.category_map.at("vn").size(), 4u); EXPECT_EQ(result.category_map.at("vt").size(), 3u); EXPECT_EQ(result.category_map.at("f").size(), 5u); } TEST(Scan, FiltersByObject) { std::ifstream input(test_data_path("test-scan-1.txt")); ASSERT_TRUE(input.is_open()); const auto result = wavefront::scan(input, {"test"}); EXPECT_EQ(result.category_map.at("f").size(), 4u); EXPECT_EQ(result.category_map.at("f")[0], 19u); EXPECT_EQ(result.category_map.at("f")[1], 21u); } TEST(Scan, FiltersByGroup) { std::ifstream input(test_data_path("test-scan-1.txt")); ASSERT_TRUE(input.is_open()); const auto result = wavefront::scan(input, {}, {"test"}); EXPECT_EQ(result.category_map.at("f").size(), 3u); EXPECT_EQ(result.category_map.at("f")[0], 21u); } TEST(Scan, FiltersByObjectAndGroup) { std::ifstream input(test_data_path("test-scan-1.txt")); ASSERT_TRUE(input.is_open()); const auto result = wavefront::scan(input, {"test"}, {"test"}); EXPECT_EQ(result.category_map.at("f").size(), 3u); EXPECT_EQ(result.category_map.at("f")[0], 21u); } }