123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- """
- Copyright (c) Contributors to the Open 3D Engine Project.
- For complete copyright and license terms please see the LICENSE at the root of this distribution.
- SPDX-License-Identifier: Apache-2.0 OR MIT
- """
- def ReportError(msg):
- from editor_python_test_tools.utils import Report
- Report.result(msg, False)
- raise Exception(msg)
- def MaterialProperty_ProcPrefabWorks():
- # Description: the AutomatedTesting\Assets\ap_test_assets\default_mat.fbx
- # source asset should produce a procedural prefab named
- # 'assets/ap_test_assets/default_mat_fbx.procprefab' which is a JSON
- # file. In that JSON file, there should be a field named 'assetHint' and
- # have the value 'gem/sponza/assets/objects/sponza_mat_bricks.azmaterial'
- # This test validates these data points.
- from editor_python_test_tools.utils import Report
- from editor_python_test_tools.utils import TestHelper
- import azlmbr.legacy.general
- import azlmbr.prefab
- import json
- # Required for automated tests
- TestHelper.init_idle()
- # Open the test level
- TestHelper.open_level(directory="", level="Base")
- azlmbr.legacy.general.idle_wait_frames(1)
- templateId = azlmbr.prefab.LoadTemplate('assets/ap_test_assets/default_mat_fbx.procprefab')
- jsonTemplate = azlmbr.prefab.SaveTemplateToString(templateId)
- if (len(jsonTemplate) == 0):
- ReportError('Could not load JSON template for default_mat_fbx.procprefab')
- foundItems = []
- def find_azmaterial(d, foundItems):
- a_list = d.items() if isinstance(d, dict) else enumerate(d)
- for k, v in a_list:
- if isinstance(v, dict) or isinstance(v, list):
- find_azmaterial(v, foundItems)
- elif (k == 'assetHint' and v == 'gem/sponza/assets/objects/sponza_mat_bricks.azmaterial'):
- foundItems.append(True)
- find_azmaterial(json.loads(jsonTemplate), foundItems)
- if (len(foundItems) == 0):
- ReportError('Could not find material asset in prefab template')
- # all tests worked
- Report.result("Found the expected fields in the default_mat_fbx.procprefab", True)
- if __name__ == "__main__":
- from editor_python_test_tools.utils import Report
- Report.start_test(MaterialProperty_ProcPrefabWorks)
|