diff --git a/tests/issue-177.mtl b/tests/issue-177.mtl new file mode 100644 index 0000000..d3a1c7a --- /dev/null +++ b/tests/issue-177.mtl @@ -0,0 +1,24 @@ +newmtl white +Ka 0 0 0 +Kd 1 1 1 +Ks 0 0 0 + +newmtl red +Ka 0 0 0 +Kd 1 0 0 +Ks 0 0 0 + +newmtl green +Ka 0 0 0 +Kd 0 1 0 +Ks 0 0 0 + +newmtl blue +Ka 0 0 0 +Kd 0 0 1 +Ks 0 0 0 + +newmtl light +Ka 20 20 20 +Kd 1 1 1 +Ks 0 0 0 diff --git a/tests/issue-177.obj b/tests/issue-177.obj new file mode 100644 index 0000000..0d0ac68 --- /dev/null +++ b/tests/issue-177.obj @@ -0,0 +1,31 @@ +mtllib issue-177.mtl + +v 0.000000 2.000000 2.000000 +v 0.000000 0.000000 2.000000 +v 2.000000 0.000000 2.000000 +v 2.000000 2.000000 2.000000 +v 0.000000 2.000000 0.000000 +v 0.000000 0.000000 0.000000 +v 2.000000 0.000000 0.000000 +v 2.000000 2.000000 0.000000 +# 8 vertices + +g front cube +usemtl white +f 1 2 3 4 +g back cube +# expects white material +f 8 7 6 5 +g right cube +usemtl red +f 4 3 7 8 +g top cube +usemtl white +f 5 1 4 8 +g left cube +usemtl green +f 5 6 2 1 +g bottom cube +usemtl white +f 2 6 7 3 +# 6 elements diff --git a/tests/tester.cc b/tests/tester.cc index f8b6d6c..82748fa 100644 --- a/tests/tester.cc +++ b/tests/tester.cc @@ -768,6 +768,22 @@ TEST_CASE("invalid-face-definition", "[face]") { REQUIRE(0 == shapes[0].mesh.indices.size()); } +TEST_CASE("Empty mtl basedir", "[Issue177]") { + // Win32 spesific? + tinyobj::attrib_t attrib; + std::vector shapes; + std::vector materials; + + std::string err; + bool ret = tinyobj::LoadObj(&attrib, &shapes, &materials, &err, "issue-177.obj"); + + if (!err.empty()) { + std::cerr << "[Issue177] " << err << std::endl; + } + + REQUIRE(true == ret); +} + // Fuzzer test. // Just check if it does not crash. // Disable by default since Windows filesystem can't create filename of afl testdata