42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
import os
|
|
import sys
|
|
import unittest
|
|
from unittest import mock
|
|
|
|
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
import model_decimate
|
|
|
|
|
|
class TestModelDecimateCli(unittest.TestCase):
|
|
def test_default_reducer_is_quad(self):
|
|
summary = {
|
|
"src": "store.fbx",
|
|
"tris_before": 49966,
|
|
"tris_after": 3000,
|
|
"target": 3000,
|
|
"reducer": "quad",
|
|
"uv": {
|
|
"mode": "seam",
|
|
"islands": 1,
|
|
"fill": 1.0,
|
|
"flipped": 0.0,
|
|
"overlap": 0.0,
|
|
},
|
|
"warnings": [],
|
|
}
|
|
argv = ["model_decimate.py", "store.fbx", "--tris", "3000"]
|
|
|
|
with mock.patch.object(sys, "argv", argv), \
|
|
mock.patch.object(model_decimate, "find_blender", return_value="blender"), \
|
|
mock.patch.object(model_decimate, "run_blender_script", return_value=summary) as run:
|
|
model_decimate.main()
|
|
|
|
args = run.call_args.args[2]
|
|
# argv 顺序:input, out, tris, unwrap, overlap, reducer, qr_input_cap
|
|
self.assertEqual(args[5], "quad") # reducer 默认 quad
|
|
self.assertEqual(args[6], "50000") # qr_input_cap 默认 50000
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|