You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
210 lines
8.6 KiB
Python
210 lines
8.6 KiB
Python
"""
|
|
All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
|
its licensors.
|
|
|
|
For complete copyright and license terms please see the LICENSE at the root of this
|
|
distribution (the "License"). All use of this software is governed by the License,
|
|
or, if provided, by the license below or the license accompanying this file. Do not
|
|
remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
"""
|
|
|
|
'''
|
|
This unittest might have to be refactored once changes to Physmaterial_Editor.py are made.
|
|
These changes will occur after the but, reverence below is resloved.
|
|
Bug: LY-107392
|
|
'''
|
|
class Tests:
|
|
opening_bad_file = ("Bad file could not be opened", "Bad file was opened")
|
|
opened_good_file = ("Valid file was opened", "Valid file was not opened")
|
|
opened_default_file = ("Default file was opened", "Default file was not opened")
|
|
number_of_materials = ("File has correct number of materials", "File has wrong number of materials")
|
|
material_deleted = ("Material successfully deleted", "Material was not deleted")
|
|
material_modified = ("Material successfully modified", "Material was not modified")
|
|
modify_attribute_error = ("Invalid attribute raises error", "Invalid attribute doesn't raise error")
|
|
modify_combine_error = ("Invalid combine value raises error", "Invalid combine value doesn't raise error")
|
|
modify_friction_error = ("Invalid friction value raises error", "Invalid restitution value doesn't raise error")
|
|
delete_value_error = ("Nonexistent material can't be deleted", "Nonexistend material deleted")
|
|
no_overwrite = ("File not updated with no write() call", "File updated with no write() call")
|
|
overwrite_works = ("File can be updated", "File can not be updated")
|
|
|
|
|
|
def run():
|
|
"""
|
|
Summary: Tests the utility of the Physmaterial_Editor
|
|
|
|
Level Description: Completely empty and used as method to run material editing methods from the editor
|
|
|
|
Expected Results: All Physmaterial tests work as expected.
|
|
|
|
Test Steps:
|
|
1) Open Level
|
|
2) Check that the correct files open
|
|
3) Check library properties
|
|
4) Check editor methods
|
|
5) Check write() works as expected
|
|
6) Close Editor
|
|
|
|
Note:
|
|
- This test file must be called from the Open 3D Engine Editor command terminal
|
|
- Any passed and failed tests are written to the Editor.log file.
|
|
Parsing the file or running a log_monitor are required to observe the test results.
|
|
|
|
:return: None
|
|
"""
|
|
import os
|
|
import sys
|
|
import ImportPathHelper as imports
|
|
|
|
imports.init()
|
|
|
|
from editor_python_test_tools.utils import Report
|
|
from editor_python_test_tools.utils import TestHelper as helper
|
|
|
|
import azlmbr.legacy.general as general
|
|
from Physmaterial_Editor import Physmaterial_Editor
|
|
|
|
# Test file names
|
|
MATERIAL_LIBRARY = "UtilTest_Physmaterial_Editor_TestLibrary.physmaterial"
|
|
MATERIAL_LIBRARY_BAD = "UtilTest_Physmaterial_Editor_TestLibrary_Bad.physmaterial"
|
|
NUMBER_OF_MATERIALS = 21
|
|
|
|
# Test Functions
|
|
def test_open_good_file():
|
|
# type () -> bool
|
|
try:
|
|
Physmaterial_Editor(MATERIAL_LIBRARY)
|
|
except Exception:
|
|
return False
|
|
return True
|
|
|
|
def test_fail_opening_bad_file():
|
|
# type () -> bool
|
|
try:
|
|
Physmaterial_Editor(MATERIAL_LIBRARY_BAD)
|
|
except Exception:
|
|
return True
|
|
return False
|
|
|
|
def test_open_default_file():
|
|
# type () -> bool
|
|
try:
|
|
Physmaterial_Editor()
|
|
except Exception:
|
|
return False
|
|
return True
|
|
|
|
def test_number_of_materials():
|
|
# type () -> bool
|
|
try:
|
|
material_library_object = Physmaterial_Editor(MATERIAL_LIBRARY)
|
|
except Exception as e:
|
|
print (e)
|
|
raise Exception("Something went wrong with test_number_of materials")
|
|
return material_library_object.number_of_materials == NUMBER_OF_MATERIALS
|
|
|
|
def test_can_modify_material_element():
|
|
# type () -> bool
|
|
try:
|
|
material_library_object = Physmaterial_Editor(MATERIAL_LIBRARY)
|
|
except Exception as e:
|
|
print (e)
|
|
raise Exception("Something went wrong with test_can_modify_material_element")
|
|
return material_library_object.modify_material("canopy", "StaticFriction", 1.56)
|
|
|
|
def test_bad_attribute_passed_modify_material():
|
|
# type () -> bool
|
|
material_library_object = Physmaterial_Editor(MATERIAL_LIBRARY)
|
|
try:
|
|
material_library_object.modify_material("canopy", "Friction", 1.56)
|
|
except Exception:
|
|
return True
|
|
return False
|
|
|
|
def test_bad_value_passed_modify_combine():
|
|
# type () -> bool
|
|
material_library_object = Physmaterial_Editor(MATERIAL_LIBRARY)
|
|
try:
|
|
material_library_object.modify_material("canopy", "FrictionCombine", 1.56)
|
|
except Exception:
|
|
return True
|
|
return False
|
|
|
|
def test_bad_value_passed_modify_friction():
|
|
# type () -> bool
|
|
material_library_object = Physmaterial_Editor(MATERIAL_LIBRARY)
|
|
try:
|
|
material_library_object.modify_material("canopy", "StaticFriction", "1.56")
|
|
except Exception:
|
|
return True
|
|
return False
|
|
|
|
def test_can_delete_material():
|
|
# type () -> bool
|
|
try:
|
|
material_library_object = Physmaterial_Editor(MATERIAL_LIBRARY)
|
|
except Exception as e:
|
|
print (e)
|
|
raise Exception("Something went wrong with test_can_delete_material")
|
|
return material_library_object.delete_material("default")
|
|
|
|
def test_can_not_delete_nonexistant_material():
|
|
# type () -> bool
|
|
try:
|
|
material_library_object = Physmaterial_Editor(MATERIAL_LIBRARY)
|
|
except Exception as e:
|
|
print (e)
|
|
raise Exception("Something went wrong with test_can_not_delete_nonexistant_material")
|
|
return material_library_object.delete_material("default")
|
|
|
|
def test_file_does_not_update_without_overwrite():
|
|
# type () -> bool
|
|
try:
|
|
material_library_object = Physmaterial_Editor(MATERIAL_LIBRARY)
|
|
material_deleted = material_library_object.delete_material("fabric")
|
|
|
|
material_library_object = Physmaterial_Editor(MATERIAL_LIBRARY)
|
|
except Exception as e:
|
|
print(e)
|
|
raise Exception("Something went wrong with test_file_does_not_update_without_overwrite")
|
|
return material_library_object.number_of_materials != (NUMBER_OF_MATERIALS - 1) and material_deleted
|
|
|
|
def test_file_does_update_with_overwrite():
|
|
# type () -> bool
|
|
try:
|
|
material_library_object = Physmaterial_Editor(MATERIAL_LIBRARY)
|
|
material_deleted = material_library_object.delete_material("glass")
|
|
material_library_object.save_changes()
|
|
material_library_object = Physmaterial_Editor(MATERIAL_LIBRARY)
|
|
except Exception as e:
|
|
print(e)
|
|
raise Exception("Something went wrong with test_file_does_update_with_overwrite")
|
|
return material_library_object.number_of_materials == (NUMBER_OF_MATERIALS - 1) or material_deleted
|
|
|
|
# Test Script
|
|
# 1) Open Level
|
|
helper.init_idle()
|
|
helper.open_level('physics', 'Physmaterial_Editor_Test')
|
|
|
|
# 2) Check that the correct files open
|
|
Report.result(Tests.opening_bad_file, test_fail_opening_bad_file())
|
|
Report.result(Tests.opened_good_file, test_open_good_file())
|
|
Report.result(Tests.opened_default_file, test_open_default_file())
|
|
|
|
# 3) Check library properties
|
|
Report.result(Tests.number_of_materials, test_number_of_materials())
|
|
|
|
# 4) Check editor methods
|
|
Report.result(Tests.material_deleted, test_can_delete_material())
|
|
Report.result(Tests.material_modified, test_can_modify_material_element())
|
|
Report.result(Tests.modify_attribute_error, test_bad_attribute_passed_modify_material())
|
|
Report.result(Tests.modify_combine_error, test_bad_value_passed_modify_combine())
|
|
Report.result(Tests.modify_friction_error, test_bad_value_passed_modify_friction())
|
|
Report.result(Tests.delete_value_error, test_can_not_delete_nonexistant_material())
|
|
|
|
# 5) Check write() works as expected
|
|
Report.result(Tests.no_overwrite, test_file_does_not_update_without_overwrite())
|
|
Report.result(Tests.overwrite_works, test_file_does_update_with_overwrite())
|
|
|
|
if __name__ == "__main__":
|
|
run() |