format
Some checks failed
Some checks failed
This commit is contained in:
@@ -55,7 +55,9 @@ func setup_test_environment():
|
||||
|
||||
# Load ValueStepper scene
|
||||
stepper_scene = load("res://scenes/ui/components/ValueStepper.tscn")
|
||||
TestHelperClass.assert_not_null(stepper_scene, "ValueStepper scene loads successfully")
|
||||
TestHelperClass.assert_not_null(
|
||||
stepper_scene, "ValueStepper scene loads successfully"
|
||||
)
|
||||
|
||||
# Create test viewport for isolated testing
|
||||
test_viewport = SubViewport.new()
|
||||
@@ -79,15 +81,23 @@ func test_basic_functionality():
|
||||
TestHelperClass.print_step("Basic Functionality")
|
||||
|
||||
if not stepper_instance:
|
||||
TestHelperClass.assert_true(false, "ValueStepper instance not available for testing")
|
||||
TestHelperClass.assert_true(
|
||||
false, "ValueStepper instance not available for testing"
|
||||
)
|
||||
return
|
||||
|
||||
# Test that ValueStepper has expected properties
|
||||
var expected_properties = [
|
||||
"data_source", "custom_format_function", "values", "display_names", "current_index"
|
||||
"data_source",
|
||||
"custom_format_function",
|
||||
"values",
|
||||
"display_names",
|
||||
"current_index"
|
||||
]
|
||||
for prop in expected_properties:
|
||||
TestHelperClass.assert_true(prop in stepper_instance, "ValueStepper has property: " + prop)
|
||||
TestHelperClass.assert_true(
|
||||
prop in stepper_instance, "ValueStepper has property: " + prop
|
||||
)
|
||||
|
||||
# Test that ValueStepper has expected methods
|
||||
var expected_methods = [
|
||||
@@ -105,12 +115,17 @@ func test_basic_functionality():
|
||||
|
||||
# Test signals
|
||||
TestHelperClass.assert_true(
|
||||
stepper_instance.has_signal("value_changed"), "ValueStepper has value_changed signal"
|
||||
stepper_instance.has_signal("value_changed"),
|
||||
"ValueStepper has value_changed signal"
|
||||
)
|
||||
|
||||
# Test UI components
|
||||
TestHelperClass.assert_not_null(stepper_instance.left_button, "Left button is available")
|
||||
TestHelperClass.assert_not_null(stepper_instance.right_button, "Right button is available")
|
||||
TestHelperClass.assert_not_null(
|
||||
stepper_instance.left_button, "Left button is available"
|
||||
)
|
||||
TestHelperClass.assert_not_null(
|
||||
stepper_instance.right_button, "Right button is available"
|
||||
)
|
||||
TestHelperClass.assert_not_null(
|
||||
stepper_instance.value_display, "Value display label is available"
|
||||
)
|
||||
@@ -135,24 +150,33 @@ func test_data_source_loading():
|
||||
|
||||
# Test default language data source
|
||||
TestHelperClass.assert_equal(
|
||||
"language", stepper_instance.data_source, "Default data source is language"
|
||||
"language",
|
||||
stepper_instance.data_source,
|
||||
"Default data source is language"
|
||||
)
|
||||
|
||||
# Test that values are loaded
|
||||
TestHelperClass.assert_not_null(stepper_instance.values, "Values array is initialized")
|
||||
TestHelperClass.assert_not_null(
|
||||
stepper_instance.values, "Values array is initialized"
|
||||
)
|
||||
TestHelperClass.assert_not_null(
|
||||
stepper_instance.display_names, "Display names array is initialized"
|
||||
)
|
||||
TestHelperClass.assert_true(stepper_instance.values is Array, "Values is Array type")
|
||||
TestHelperClass.assert_true(
|
||||
stepper_instance.values is Array, "Values is Array type"
|
||||
)
|
||||
TestHelperClass.assert_true(
|
||||
stepper_instance.display_names is Array, "Display names is Array type"
|
||||
)
|
||||
|
||||
# Test that language data is loaded correctly
|
||||
if stepper_instance.data_source == "language":
|
||||
TestHelperClass.assert_true(stepper_instance.values.size() > 0, "Language values loaded")
|
||||
TestHelperClass.assert_true(
|
||||
stepper_instance.display_names.size() > 0, "Language display names loaded"
|
||||
stepper_instance.values.size() > 0, "Language values loaded"
|
||||
)
|
||||
TestHelperClass.assert_true(
|
||||
stepper_instance.display_names.size() > 0,
|
||||
"Language display names loaded"
|
||||
)
|
||||
TestHelperClass.assert_equal(
|
||||
stepper_instance.values.size(),
|
||||
@@ -161,7 +185,9 @@ func test_data_source_loading():
|
||||
)
|
||||
|
||||
# Test that current language is properly selected
|
||||
var current_lang = root.get_node("SettingsManager").get_setting("language")
|
||||
var current_lang = root.get_node("SettingsManager").get_setting(
|
||||
"language"
|
||||
)
|
||||
var expected_index = stepper_instance.values.find(current_lang)
|
||||
if expected_index >= 0:
|
||||
TestHelperClass.assert_equal(
|
||||
@@ -176,9 +202,13 @@ func test_data_source_loading():
|
||||
test_viewport.add_child(resolution_stepper)
|
||||
await process_frame
|
||||
|
||||
TestHelperClass.assert_true(resolution_stepper.values.size() > 0, "Resolution values loaded")
|
||||
TestHelperClass.assert_true(
|
||||
resolution_stepper.values.size() > 0, "Resolution values loaded"
|
||||
)
|
||||
TestHelperClass.assert_contains(
|
||||
resolution_stepper.values, "1920x1080", "Resolution data contains expected value"
|
||||
resolution_stepper.values,
|
||||
"1920x1080",
|
||||
"Resolution data contains expected value"
|
||||
)
|
||||
|
||||
resolution_stepper.queue_free()
|
||||
@@ -189,9 +219,13 @@ func test_data_source_loading():
|
||||
test_viewport.add_child(difficulty_stepper)
|
||||
await process_frame
|
||||
|
||||
TestHelperClass.assert_true(difficulty_stepper.values.size() > 0, "Difficulty values loaded")
|
||||
TestHelperClass.assert_true(
|
||||
difficulty_stepper.values.size() > 0, "Difficulty values loaded"
|
||||
)
|
||||
TestHelperClass.assert_contains(
|
||||
difficulty_stepper.values, "normal", "Difficulty data contains expected value"
|
||||
difficulty_stepper.values,
|
||||
"normal",
|
||||
"Difficulty data contains expected value"
|
||||
)
|
||||
TestHelperClass.assert_equal(
|
||||
1, difficulty_stepper.current_index, "Difficulty defaults to normal"
|
||||
@@ -214,13 +248,17 @@ func test_value_navigation():
|
||||
var initial_value = stepper_instance.get_current_value()
|
||||
stepper_instance.change_value(1)
|
||||
var next_value = stepper_instance.get_current_value()
|
||||
TestHelperClass.assert_not_equal(initial_value, next_value, "Forward navigation changes value")
|
||||
TestHelperClass.assert_not_equal(
|
||||
initial_value, next_value, "Forward navigation changes value"
|
||||
)
|
||||
|
||||
# Test backward navigation
|
||||
stepper_instance.change_value(-1)
|
||||
var back_value = stepper_instance.get_current_value()
|
||||
TestHelperClass.assert_equal(
|
||||
initial_value, back_value, "Backward navigation returns to original value"
|
||||
initial_value,
|
||||
back_value,
|
||||
"Backward navigation returns to original value"
|
||||
)
|
||||
|
||||
# Test wrap-around forward
|
||||
@@ -228,14 +266,18 @@ func test_value_navigation():
|
||||
stepper_instance.current_index = max_index
|
||||
stepper_instance.change_value(1)
|
||||
TestHelperClass.assert_equal(
|
||||
0, stepper_instance.current_index, "Forward navigation wraps to beginning"
|
||||
0,
|
||||
stepper_instance.current_index,
|
||||
"Forward navigation wraps to beginning"
|
||||
)
|
||||
|
||||
# Test wrap-around backward
|
||||
stepper_instance.current_index = 0
|
||||
stepper_instance.change_value(-1)
|
||||
TestHelperClass.assert_equal(
|
||||
max_index, stepper_instance.current_index, "Backward navigation wraps to end"
|
||||
max_index,
|
||||
stepper_instance.current_index,
|
||||
"Backward navigation wraps to end"
|
||||
)
|
||||
|
||||
# Restore original state
|
||||
@@ -258,13 +300,19 @@ func test_custom_values():
|
||||
var custom_values = ["apple", "banana", "cherry"]
|
||||
stepper_instance.setup_custom_values(custom_values)
|
||||
|
||||
TestHelperClass.assert_equal(3, stepper_instance.values.size(), "Custom values set correctly")
|
||||
TestHelperClass.assert_equal("apple", stepper_instance.values[0], "First custom value correct")
|
||||
TestHelperClass.assert_equal(
|
||||
3, stepper_instance.values.size(), "Custom values set correctly"
|
||||
)
|
||||
TestHelperClass.assert_equal(
|
||||
"apple", stepper_instance.values[0], "First custom value correct"
|
||||
)
|
||||
TestHelperClass.assert_equal(
|
||||
0, stepper_instance.current_index, "Index reset to 0 for custom values"
|
||||
)
|
||||
TestHelperClass.assert_equal(
|
||||
"apple", stepper_instance.get_current_value(), "Current value matches first custom value"
|
||||
"apple",
|
||||
stepper_instance.get_current_value(),
|
||||
"Current value matches first custom value"
|
||||
)
|
||||
|
||||
# Test custom values with display names
|
||||
@@ -272,31 +320,43 @@ func test_custom_values():
|
||||
stepper_instance.setup_custom_values(custom_values, custom_display_names)
|
||||
|
||||
TestHelperClass.assert_equal(
|
||||
3, stepper_instance.display_names.size(), "Custom display names set correctly"
|
||||
3,
|
||||
stepper_instance.display_names.size(),
|
||||
"Custom display names set correctly"
|
||||
)
|
||||
TestHelperClass.assert_equal(
|
||||
"Red Apple", stepper_instance.display_names[0], "First display name correct"
|
||||
"Red Apple",
|
||||
stepper_instance.display_names[0],
|
||||
"First display name correct"
|
||||
)
|
||||
|
||||
# Test navigation with custom values
|
||||
stepper_instance.change_value(1)
|
||||
TestHelperClass.assert_equal(
|
||||
"banana", stepper_instance.get_current_value(), "Navigation works with custom values"
|
||||
"banana",
|
||||
stepper_instance.get_current_value(),
|
||||
"Navigation works with custom values"
|
||||
)
|
||||
|
||||
# Test set_current_value
|
||||
stepper_instance.set_current_value("cherry")
|
||||
TestHelperClass.assert_equal(
|
||||
"cherry", stepper_instance.get_current_value(), "set_current_value works correctly"
|
||||
"cherry",
|
||||
stepper_instance.get_current_value(),
|
||||
"set_current_value works correctly"
|
||||
)
|
||||
TestHelperClass.assert_equal(
|
||||
2, stepper_instance.current_index, "Index updated correctly by set_current_value"
|
||||
2,
|
||||
stepper_instance.current_index,
|
||||
"Index updated correctly by set_current_value"
|
||||
)
|
||||
|
||||
# Test invalid value
|
||||
stepper_instance.set_current_value("grape")
|
||||
TestHelperClass.assert_equal(
|
||||
"cherry", stepper_instance.get_current_value(), "Invalid value doesn't change current value"
|
||||
"cherry",
|
||||
stepper_instance.get_current_value(),
|
||||
"Invalid value doesn't change current value"
|
||||
)
|
||||
|
||||
# Restore original state
|
||||
@@ -319,7 +379,9 @@ func test_input_handling():
|
||||
var left_handled = stepper_instance.handle_input_action("move_left")
|
||||
TestHelperClass.assert_true(left_handled, "Left input action handled")
|
||||
TestHelperClass.assert_not_equal(
|
||||
original_value, stepper_instance.get_current_value(), "Left action changes value"
|
||||
original_value,
|
||||
stepper_instance.get_current_value(),
|
||||
"Left action changes value"
|
||||
)
|
||||
|
||||
# Test right input action
|
||||
@@ -333,14 +395,18 @@ func test_input_handling():
|
||||
|
||||
# Test invalid input action
|
||||
var invalid_handled = stepper_instance.handle_input_action("invalid_action")
|
||||
TestHelperClass.assert_false(invalid_handled, "Invalid input action not handled")
|
||||
TestHelperClass.assert_false(
|
||||
invalid_handled, "Invalid input action not handled"
|
||||
)
|
||||
|
||||
# Test button press simulation
|
||||
if stepper_instance.left_button:
|
||||
var before_left = stepper_instance.get_current_value()
|
||||
stepper_instance.handle_input_action("move_left")
|
||||
TestHelperClass.assert_not_equal(
|
||||
before_left, stepper_instance.get_current_value(), "Left button press changes value"
|
||||
before_left,
|
||||
stepper_instance.get_current_value(),
|
||||
"Left button press changes value"
|
||||
)
|
||||
|
||||
if stepper_instance.right_button:
|
||||
@@ -365,9 +431,12 @@ func test_visual_feedback():
|
||||
|
||||
# Test highlighting
|
||||
stepper_instance.set_highlighted(true)
|
||||
TestHelperClass.assert_true(stepper_instance.is_highlighted, "Highlighted state set correctly")
|
||||
TestHelperClass.assert_true(
|
||||
stepper_instance.scale.x > original_scale.x, "Scale increased when highlighted"
|
||||
stepper_instance.is_highlighted, "Highlighted state set correctly"
|
||||
)
|
||||
TestHelperClass.assert_true(
|
||||
stepper_instance.scale.x > original_scale.x,
|
||||
"Scale increased when highlighted"
|
||||
)
|
||||
|
||||
# Test unhighlighting
|
||||
@@ -376,17 +445,25 @@ func test_visual_feedback():
|
||||
stepper_instance.is_highlighted, "Highlighted state cleared correctly"
|
||||
)
|
||||
TestHelperClass.assert_equal(
|
||||
original_scale, stepper_instance.scale, "Scale restored when unhighlighted"
|
||||
original_scale,
|
||||
stepper_instance.scale,
|
||||
"Scale restored when unhighlighted"
|
||||
)
|
||||
TestHelperClass.assert_equal(
|
||||
original_modulate, stepper_instance.modulate, "Modulate restored when unhighlighted"
|
||||
original_modulate,
|
||||
stepper_instance.modulate,
|
||||
"Modulate restored when unhighlighted"
|
||||
)
|
||||
|
||||
# Test display update
|
||||
if stepper_instance.value_display:
|
||||
var current_text = stepper_instance.value_display.text
|
||||
TestHelperClass.assert_true(current_text.length() > 0, "Value display has text content")
|
||||
TestHelperClass.assert_not_equal("N/A", current_text, "Value display shows valid content")
|
||||
TestHelperClass.assert_true(
|
||||
current_text.length() > 0, "Value display has text content"
|
||||
)
|
||||
TestHelperClass.assert_not_equal(
|
||||
"N/A", current_text, "Value display shows valid content"
|
||||
)
|
||||
|
||||
|
||||
func test_settings_integration():
|
||||
@@ -413,13 +490,17 @@ func test_settings_integration():
|
||||
# Value change is applied automatically through set_current_value
|
||||
|
||||
# Verify setting was updated
|
||||
var updated_lang = root.get_node("SettingsManager").get_setting("language")
|
||||
var updated_lang = root.get_node("SettingsManager").get_setting(
|
||||
"language"
|
||||
)
|
||||
TestHelperClass.assert_equal(
|
||||
target_lang, updated_lang, "Language setting updated correctly"
|
||||
)
|
||||
|
||||
# Restore original language
|
||||
root.get_node("SettingsManager").set_setting("language", original_lang)
|
||||
root.get_node("SettingsManager").set_setting(
|
||||
"language", original_lang
|
||||
)
|
||||
|
||||
|
||||
func test_boundary_conditions():
|
||||
@@ -435,12 +516,16 @@ func test_boundary_conditions():
|
||||
await process_frame
|
||||
|
||||
TestHelperClass.assert_equal(
|
||||
"", empty_stepper.get_current_value(), "Empty values array returns empty string"
|
||||
"",
|
||||
empty_stepper.get_current_value(),
|
||||
"Empty values array returns empty string"
|
||||
)
|
||||
|
||||
# Test change_value with empty array
|
||||
empty_stepper.change_value(1) # Should not crash
|
||||
TestHelperClass.assert_true(true, "change_value handles empty array gracefully")
|
||||
TestHelperClass.assert_true(
|
||||
true, "change_value handles empty array gracefully"
|
||||
)
|
||||
|
||||
empty_stepper.queue_free()
|
||||
|
||||
@@ -450,14 +535,18 @@ func test_boundary_conditions():
|
||||
stepper_instance.current_index = -1
|
||||
# Display updates automatically when value changes
|
||||
TestHelperClass.assert_equal(
|
||||
"N/A", stepper_instance.value_display.text, "Negative index shows N/A"
|
||||
"N/A",
|
||||
stepper_instance.value_display.text,
|
||||
"Negative index shows N/A"
|
||||
)
|
||||
|
||||
# Test out-of-bounds index handling
|
||||
stepper_instance.current_index = stepper_instance.values.size()
|
||||
# Display updates automatically when value changes
|
||||
TestHelperClass.assert_equal(
|
||||
"N/A", stepper_instance.value_display.text, "Out-of-bounds index shows N/A"
|
||||
"N/A",
|
||||
stepper_instance.value_display.text,
|
||||
"Out-of-bounds index shows N/A"
|
||||
)
|
||||
|
||||
# Restore valid index
|
||||
@@ -487,7 +576,8 @@ func test_error_handling():
|
||||
control_name.ends_with("_stepper"), "Control name has correct suffix"
|
||||
)
|
||||
TestHelperClass.assert_true(
|
||||
control_name.begins_with(stepper_instance.data_source), "Control name includes data source"
|
||||
control_name.begins_with(stepper_instance.data_source),
|
||||
"Control name includes data source"
|
||||
)
|
||||
|
||||
# Test custom values with mismatched arrays
|
||||
@@ -496,16 +586,22 @@ func test_error_handling():
|
||||
stepper_instance.setup_custom_values(values_3, names_2)
|
||||
|
||||
# Should handle gracefully - display_names should be duplicated from values
|
||||
TestHelperClass.assert_equal(3, stepper_instance.values.size(), "Values array size preserved")
|
||||
TestHelperClass.assert_equal(
|
||||
2, stepper_instance.display_names.size(), "Display names size preserved as provided"
|
||||
3, stepper_instance.values.size(), "Values array size preserved"
|
||||
)
|
||||
TestHelperClass.assert_equal(
|
||||
2,
|
||||
stepper_instance.display_names.size(),
|
||||
"Display names size preserved as provided"
|
||||
)
|
||||
|
||||
# Test navigation with mismatched arrays
|
||||
stepper_instance.current_index = 2 # Index where display_names doesn't exist
|
||||
# Display updates automatically when value changes
|
||||
TestHelperClass.assert_equal(
|
||||
"c", stepper_instance.value_display.text, "Falls back to value when display name missing"
|
||||
"c",
|
||||
stepper_instance.value_display.text,
|
||||
"Falls back to value when display name missing"
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user