test: scan
This commit is contained in:
64
tests/unit/scan_test.cpp
Normal file
64
tests/unit/scan_test.cpp
Normal file
@@ -0,0 +1,64 @@
|
||||
#include <filesystem>
|
||||
#include <fstream>
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user