more lint and formatting
Some checks failed
Continuous Integration / Code Formatting (push) Successful in 33s
Continuous Integration / Code Quality Check (push) Successful in 29s
Continuous Integration / Test Execution (push) Failing after 16s
Continuous Integration / CI Summary (push) Failing after 4s

This commit is contained in:
2025-10-01 15:04:40 +04:00
parent 538459f323
commit 3b8da89ad5
31 changed files with 2112 additions and 691 deletions

View File

@@ -64,23 +64,35 @@ func test_basic_functionality():
# Test that SettingsManager has expected methods
var expected_methods = [
"get_setting", "set_setting", "save_settings", "load_settings", "reset_settings_to_defaults"
"get_setting",
"set_setting",
"save_settings",
"load_settings",
"reset_settings_to_defaults"
]
TestHelperClass.assert_has_methods(
settings_manager, expected_methods, "SettingsManager methods"
)
# Test default settings structure
var expected_defaults = ["master_volume", "music_volume", "sfx_volume", "language"]
var expected_defaults = [
"master_volume", "music_volume", "sfx_volume", "language"
]
for key in expected_defaults:
TestHelperClass.assert_has_key(
settings_manager.default_settings, key, "Default setting key: " + key
settings_manager.default_settings,
key,
"Default setting key: " + key
)
# Test getting settings
var master_volume = settings_manager.get_setting("master_volume")
TestHelperClass.assert_not_null(master_volume, "Can get master_volume setting")
TestHelperClass.assert_true(master_volume is float, "master_volume is float type")
TestHelperClass.assert_not_null(
master_volume, "Can get master_volume setting"
)
TestHelperClass.assert_true(
master_volume is float, "master_volume is float type"
)
func test_input_validation_security():
@@ -88,38 +100,56 @@ func test_input_validation_security():
# Test NaN validation
var nan_result = settings_manager.set_setting("master_volume", NAN)
TestHelperClass.assert_false(nan_result, "NaN values rejected for volume settings")
TestHelperClass.assert_false(
nan_result, "NaN values rejected for volume settings"
)
# Test Infinity validation
var inf_result = settings_manager.set_setting("master_volume", INF)
TestHelperClass.assert_false(inf_result, "Infinity values rejected for volume settings")
TestHelperClass.assert_false(
inf_result, "Infinity values rejected for volume settings"
)
# Test negative infinity validation
var neg_inf_result = settings_manager.set_setting("master_volume", -INF)
TestHelperClass.assert_false(neg_inf_result, "Negative infinity values rejected")
TestHelperClass.assert_false(
neg_inf_result, "Negative infinity values rejected"
)
# Test range validation for volumes
var negative_volume = settings_manager.set_setting("master_volume", -0.5)
TestHelperClass.assert_false(negative_volume, "Negative volume values rejected")
TestHelperClass.assert_false(
negative_volume, "Negative volume values rejected"
)
var excessive_volume = settings_manager.set_setting("master_volume", 1.5)
TestHelperClass.assert_false(excessive_volume, "Volume values > 1.0 rejected")
TestHelperClass.assert_false(
excessive_volume, "Volume values > 1.0 rejected"
)
# Test valid volume range
var valid_volume = settings_manager.set_setting("master_volume", 0.5)
TestHelperClass.assert_true(valid_volume, "Valid volume values accepted")
TestHelperClass.assert_equal(
0.5, settings_manager.get_setting("master_volume"), "Volume value set correctly"
0.5,
settings_manager.get_setting("master_volume"),
"Volume value set correctly"
)
# Test string length validation for language
var long_language = "a".repeat(20) # Exceeds MAX_SETTING_STRING_LENGTH
var long_lang_result = settings_manager.set_setting("language", long_language)
TestHelperClass.assert_false(long_lang_result, "Excessively long language codes rejected")
var long_lang_result = settings_manager.set_setting(
"language", long_language
)
TestHelperClass.assert_false(
long_lang_result, "Excessively long language codes rejected"
)
# Test invalid characters in language code
var invalid_chars = settings_manager.set_setting("language", "en<script>")
TestHelperClass.assert_false(invalid_chars, "Language codes with invalid characters rejected")
TestHelperClass.assert_false(
invalid_chars, "Language codes with invalid characters rejected"
)
# Test valid language code
var valid_lang = settings_manager.set_setting("language", "en")
@@ -141,10 +171,14 @@ func test_file_io_security():
# Test loading with backup scenario
settings_manager.load_settings()
TestHelperClass.assert_not_null(settings_manager.settings, "Settings loaded successfully")
TestHelperClass.assert_not_null(
settings_manager.settings, "Settings loaded successfully"
)
# Test that settings file exists after save
TestHelperClass.assert_file_exists("user://settings.cfg", "Settings file created after save")
TestHelperClass.assert_file_exists(
"user://settings.cfg", "Settings file created after save"
)
func test_json_parsing_security():
@@ -157,7 +191,9 @@ func test_json_parsing_security():
temp_files.append(invalid_json_path)
# Create oversized JSON file
var large_json_content = '{"languages": {"' + "x".repeat(70000) + '": "test"}}'
var large_json_content = (
'{"languages": {"' + "x".repeat(70000) + '": "test"}}'
)
var oversized_json_path = TestHelper.create_temp_file(
"oversized_languages.json", large_json_content
)
@@ -178,11 +214,15 @@ func test_language_validation():
var supported_langs = ["en", "ru"]
for lang in supported_langs:
var result = settings_manager.set_setting("language", lang)
TestHelperClass.assert_true(result, "Supported language accepted: " + lang)
TestHelperClass.assert_true(
result, "Supported language accepted: " + lang
)
# Test unsupported language
var unsupported_result = settings_manager.set_setting("language", "xyz")
TestHelperClass.assert_false(unsupported_result, "Unsupported language rejected")
TestHelperClass.assert_false(
unsupported_result, "Unsupported language rejected"
)
# Test empty language
var empty_result = settings_manager.set_setting("language", "")
@@ -201,26 +241,32 @@ func test_volume_validation():
for setting in volume_settings:
# Test boundary values
TestHelperClass.assert_true(
settings_manager.set_setting(setting, 0.0), "Volume 0.0 accepted for " + setting
settings_manager.set_setting(setting, 0.0),
"Volume 0.0 accepted for " + setting
)
TestHelperClass.assert_true(
settings_manager.set_setting(setting, 1.0), "Volume 1.0 accepted for " + setting
settings_manager.set_setting(setting, 1.0),
"Volume 1.0 accepted for " + setting
)
# Test out of range values
TestHelperClass.assert_false(
settings_manager.set_setting(setting, -0.1), "Negative volume rejected for " + setting
settings_manager.set_setting(setting, -0.1),
"Negative volume rejected for " + setting
)
TestHelperClass.assert_false(
settings_manager.set_setting(setting, 1.1), "Volume > 1.0 rejected for " + setting
settings_manager.set_setting(setting, 1.1),
"Volume > 1.0 rejected for " + setting
)
# Test invalid types
TestHelperClass.assert_false(
settings_manager.set_setting(setting, "0.5"), "String volume rejected for " + setting
settings_manager.set_setting(setting, "0.5"),
"String volume rejected for " + setting
)
TestHelperClass.assert_false(
settings_manager.set_setting(setting, null), "Null volume rejected for " + setting
settings_manager.set_setting(setting, null),
"Null volume rejected for " + setting
)
@@ -228,8 +274,12 @@ func test_error_handling_and_recovery():
TestHelperClass.print_step("Error Handling and Recovery")
# Test unknown setting key
var unknown_result = settings_manager.set_setting("unknown_setting", "value")
TestHelperClass.assert_false(unknown_result, "Unknown setting keys rejected")
var unknown_result = settings_manager.set_setting(
"unknown_setting", "value"
)
TestHelperClass.assert_false(
unknown_result, "Unknown setting keys rejected"
)
# Test recovery from corrupted settings
# Save current state
@@ -248,13 +298,18 @@ func test_error_handling_and_recovery():
# Test fallback language loading
TestHelperClass.assert_true(
settings_manager.languages_data.has("languages"), "Fallback languages loaded"
settings_manager.languages_data.has("languages"),
"Fallback languages loaded"
)
TestHelperClass.assert_has_key(
settings_manager.languages_data["languages"], "en", "English fallback language available"
settings_manager.languages_data["languages"],
"en",
"English fallback language available"
)
TestHelperClass.assert_has_key(
settings_manager.languages_data["languages"], "ru", "Russian fallback language available"
settings_manager.languages_data["languages"],
"ru",
"Russian fallback language available"
)
@@ -281,7 +336,9 @@ func test_reset_functionality():
)
# Test that reset saves automatically
TestHelperClass.assert_file_exists("user://settings.cfg", "Settings file exists after reset")
TestHelperClass.assert_file_exists(
"user://settings.cfg", "Settings file exists after reset"
)
func test_performance_benchmarks():
@@ -290,18 +347,24 @@ func test_performance_benchmarks():
# Test settings load performance
TestHelperClass.start_performance_test("load_settings")
settings_manager.load_settings()
TestHelperClass.end_performance_test("load_settings", 100.0, "Settings load within 100ms")
TestHelperClass.end_performance_test(
"load_settings", 100.0, "Settings load within 100ms"
)
# Test settings save performance
TestHelperClass.start_performance_test("save_settings")
settings_manager.save_settings()
TestHelperClass.end_performance_test("save_settings", 50.0, "Settings save within 50ms")
TestHelperClass.end_performance_test(
"save_settings", 50.0, "Settings save within 50ms"
)
# Test validation performance
TestHelperClass.start_performance_test("validation")
for i in range(100):
settings_manager.set_setting("master_volume", 0.5)
TestHelperClass.end_performance_test("validation", 50.0, "100 validations within 50ms")
TestHelperClass.end_performance_test(
"validation", 50.0, "100 validations within 50ms"
)
func cleanup_tests():