Files
game-cards/addons/gut/test/unit/test_singleton_parser.gd
2026-05-29 09:16:10 +08:00

75 lines
2.3 KiB
GDScript

extends GutInternalTester
# Constants?
var SingletonParser = GutUtils.SingletonParser
func test_can_make_one():
var sp = SingletonParser.new()
assert_not_null(sp)
func test_can_make_parsed_script():
var ps = SingletonParser.ParsedSingleton.new(OS)
assert_not_null(ps)
func test_parsed_singleton_populates_methods():
var ps = SingletonParser.ParsedSingleton.new(Time)
assert_ne(ps.methods_by_name.size(), 0)
func test_parsed_singleton_does_not_include_object_methods():
var ps = SingletonParser.ParsedSingleton.new(Time)
assert_does_not_have(ps.methods_by_name, 'free')
func test_parsed_singleton_has_enums():
var ps = SingletonParser.ParsedSingleton.new(Time)
assert_eq(ps.enums["WEEKDAY_SUNDAY"], 0)
func test_parsed_singleton_enum_values_match_class_enum_values():
var ps = SingletonParser.ParsedSingleton.new(Time)
assert_eq(ps.enums["MONTH_JANUARY"], 1)
func test_parsed_singleton_does_not_have_object_enums():
var ps = SingletonParser.ParsedSingleton.new(Time)
assert_does_not_have(ps.enums, "CONNECT_DEFERRED")
func test_parsed_singleton_contains_properties():
var ps = SingletonParser.ParsedSingleton.new(OS)
assert_has(ps.properties, "delta_smoothing")
func test_parsed_singleton_properties_have_singleton_values():
var ps = SingletonParser.ParsedSingleton.new(OS)
assert_eq(ps.properties["low_processor_usage_mode_sleep_usec"], OS.low_processor_usage_mode_sleep_usec)
func test_parsed_singleton_has_signals():
var ps = SingletonParser.ParsedSingleton.new(AudioServer)
assert_has(ps.signals, 'bus_layout_changed')
func test_can_parse_all_singletons(p = use_parameters(GutUtils.GodotSingletons.class_ref)):
var ps = SingletonParser.ParsedSingleton.new(p)
assert_not_null(ps)
func test_constants_are_added_as_enums():
var ps = SingletonParser.ParsedSingleton.new(DisplayServer)
assert_has(ps.enums, "INVALID_SCREEN")
func test_get_signal_text():
var ps = SingletonParser.ParsedSingleton.new(AudioServer)
var signal_meta = ps.signals['bus_renamed']
var text = ps.get_signal_text(signal_meta)
assert_eq(text, 'signal bus_renamed(bus_index, old_name, new_name)')
func test_get_all_signal_text():
var ps = SingletonParser.ParsedSingleton.new(AudioServer)
var text = ps.get_all_signal_text()
assert_string_contains(text, 'signal bus_renamed(bus_index, old_name, new_name)')
assert_string_contains(text, 'signal bus_layout_changed()')