aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSyoyo Fujita <syoyo@lighttransport.com>2016-11-03 02:58:44 +0900
committerSyoyo Fujita <syoyo@lighttransport.com>2016-11-03 02:58:44 +0900
commit0948ca0417455dd82891547699e97ba142021a7b (patch)
treebd838fb7b0160c0baa9d207f75cf7f0b951d892e /tests
parent582eb2b818ee5454aec73822d43c8c5e95cfc404 (diff)
downloadtinyobjloader-0948ca0417455dd82891547699e97ba142021a7b.tar.gz
Add more support for parsing texture options.
Add more unit testing for texture options.
Diffstat (limited to 'tests')
-rw-r--r--tests/tester.cc42
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/tester.cc b/tests/tester.cc
index 53955a8..b5ac70f 100644
--- a/tests/tester.cc
+++ b/tests/tester.cc
@@ -488,6 +488,48 @@ TEST_CASE("usemtl_at_last_line", "[Issue104]") {
REQUIRE(1 == shapes.size());
}
+TEST_CASE("texture_opts", "[Issue85]") {
+ tinyobj::attrib_t attrib;
+ std::vector<tinyobj::shape_t> shapes;
+ std::vector<tinyobj::material_t> materials;
+
+ std::string err;
+ bool ret = tinyobj::LoadObj(&attrib, &shapes, &materials, &err, "../models/texture-options-issue-85.obj", gMtlBasePath);
+
+ if (!err.empty()) {
+ std::cerr << err << std::endl;
+ }
+ REQUIRE(true == ret);
+ REQUIRE(1 == shapes.size());
+ REQUIRE(3 == materials.size());
+ REQUIRE(0 == materials[0].name.compare("default"));
+ REQUIRE(0 == materials[1].name.compare("bm2"));
+ REQUIRE(0 == materials[2].name.compare("bm3"));
+ REQUIRE(true == materials[0].ambient_texopt.clamp);
+ REQUIRE(0.1 == Approx(materials[0].diffuse_texopt.origin_offset[0]));
+ REQUIRE(0.0 == Approx(materials[0].diffuse_texopt.origin_offset[1]));
+ REQUIRE(0.0 == Approx(materials[0].diffuse_texopt.origin_offset[2]));
+ REQUIRE(0.1 == Approx(materials[0].specular_texopt.scale[0]));
+ REQUIRE(0.2 == Approx(materials[0].specular_texopt.scale[1]));
+ REQUIRE(1.0 == Approx(materials[0].specular_texopt.scale[2]));
+ REQUIRE(0.1 == Approx(materials[0].specular_highlight_texopt.turbulence[0]));
+ REQUIRE(0.2 == Approx(materials[0].specular_highlight_texopt.turbulence[1]));
+ REQUIRE(0.3 == Approx(materials[0].specular_highlight_texopt.turbulence[2]));
+ REQUIRE(3.0 == Approx(materials[0].bump_texopt.bump_multiplier));
+
+ REQUIRE(0.1 == Approx(materials[1].specular_highlight_texopt.brightness));
+ REQUIRE(0.3 == Approx(materials[1].specular_highlight_texopt.contrast));
+ REQUIRE('r' == materials[1].bump_texopt.imfchan);
+
+ REQUIRE(tinyobj::TEXTURE_TYPE_SPHERE == materials[2].diffuse_texopt.type);
+ REQUIRE(tinyobj::TEXTURE_TYPE_CUBE_TOP == materials[2].specular_texopt.type);
+ REQUIRE(tinyobj::TEXTURE_TYPE_CUBE_BOTTOM == materials[2].specular_highlight_texopt.type);
+ REQUIRE(tinyobj::TEXTURE_TYPE_CUBE_LEFT == materials[2].ambient_texopt.type);
+ REQUIRE(tinyobj::TEXTURE_TYPE_CUBE_RIGHT == materials[2].alpha_texopt.type);
+ REQUIRE(tinyobj::TEXTURE_TYPE_CUBE_FRONT == materials[2].bump_texopt.type);
+ REQUIRE(tinyobj::TEXTURE_TYPE_CUBE_BACK == materials[2].displacement_texopt.type);
+}
+
#if 0
int
main(