yoga/test/test_model.py

103 lines
3.1 KiB
Python
Raw Normal View History

2018-01-18 15:44:13 +01:00
import io
import os
import json
2018-01-22 17:57:56 +01:00
import pytest
2018-01-18 15:44:13 +01:00
import yoga.model
_MAGIC_GLB = b"glTF"
class Test_optimize(object):
2018-03-02 17:45:37 +01:00
def test_input_file_path(self):
2018-01-18 15:44:13 +01:00
output = io.BytesIO()
yoga.model.optimize("test/models/model.fbx", output)
output.seek(0)
assert output.read().startswith(_MAGIC_GLB)
2018-03-02 17:45:37 +01:00
def test_input_file(self):
2018-01-18 15:44:13 +01:00
input_ = open("test/models/model.fbx", "rb")
output = io.BytesIO()
yoga.model.optimize(input_, output)
input_.close()
output.seek(0)
assert output.read().startswith(_MAGIC_GLB)
2018-03-02 17:45:37 +01:00
def test_input_bytesio(self):
2018-05-07 11:20:11 +02:00
with pytest.raises(ValueError):
2018-01-22 17:57:56 +01:00
input_ = io.BytesIO(open("test/models/model.fbx", "rb").read())
output = io.BytesIO()
yoga.model.optimize(input_, output)
2018-01-18 15:44:13 +01:00
2021-03-29 13:57:02 +02:00
@pytest.mark.parametrize(
"model_path",
[
"test/models/model.fbx",
"test/models/model.dae",
],
)
2018-03-02 17:45:37 +01:00
def test_input_file_format(self, model_path):
2018-01-18 17:44:43 +01:00
output = io.BytesIO()
2018-03-02 17:45:37 +01:00
yoga.model.optimize(model_path, output)
2018-01-18 17:44:43 +01:00
output.seek(0)
assert output.read().startswith(_MAGIC_GLB)
def test_textures_empty_dictionary(self):
2018-05-07 11:20:11 +02:00
with pytest.raises(ValueError):
input_ = open("test/models/model.fbx", "rb")
output = io.BytesIO()
yoga.model.optimize(input_, output, {}, {})
def test_textures_dictionary(self):
input_ = open("test/models/model.fbx", "rb")
output = io.BytesIO()
2021-03-29 13:57:02 +02:00
yoga.model.optimize(
input_,
output,
{},
{"diffuse.jpg": open("test/models/diffuse.jpg", "rb")},
)
input_.close()
output.seek(0)
assert output.read().startswith(_MAGIC_GLB)
2018-03-02 17:45:37 +01:00
def test_output_file_path(self, tmpdir):
2018-01-18 15:44:13 +01:00
output_path = os.path.join(str(tmpdir), "output1.glb")
yoga.model.optimize("test/models/model.fbx", output_path)
output = open(output_path, "rb")
assert output.read().startswith(_MAGIC_GLB)
2018-03-02 17:45:37 +01:00
def test_output_file(self, tmpdir):
2018-01-18 15:44:13 +01:00
output_path = os.path.join(str(tmpdir), "output2.glb")
output = open(output_path, "wb")
yoga.model.optimize("test/models/model.fbx", output)
output.close()
output = open(output_path, "rb")
assert output.read().startswith(_MAGIC_GLB)
2018-03-02 17:45:37 +01:00
def test_output_bytesio(self):
2018-01-18 15:44:13 +01:00
output = io.BytesIO()
yoga.model.optimize("test/models/model.fbx", output)
output.seek(0)
assert output.read().startswith(_MAGIC_GLB)
2018-03-02 17:45:37 +01:00
def test_glb_output_format(self):
2018-01-18 15:44:13 +01:00
output = io.BytesIO()
2021-03-29 13:57:02 +02:00
yoga.model.optimize(
"test/models/model.fbx", output, {"output_format": "glb"}
)
2018-01-18 15:44:13 +01:00
output.seek(0)
assert output.read().startswith(_MAGIC_GLB)
2018-03-02 17:45:37 +01:00
def test_gltf_output_format(self):
2018-01-18 15:44:13 +01:00
output = io.BytesIO()
2021-03-29 13:57:02 +02:00
yoga.model.optimize(
"test/models/model.fbx", output, {"output_format": "gltf"}
)
2018-01-18 15:44:13 +01:00
output.seek(0)
assert json.load(output)["asset"]["version"] == "2.0"
2018-01-18 15:44:13 +01:00
# TODO Tests for no_graph_optimization and such
# TODO Tests for no_fix_infacing_normals and such