SetCurrentLanguage language="@this_script_language"
InstallPlugin emit_responses=true
FinalizeApp
// load script a
LoadScriptAs as_name="script_a", path="lifecycle.lua"
WaitForScriptLoaded name="script_a"
AttachStaticScript script="script_a"
RunUpdateOnce
AssertCallbackSuccess attachment="StaticScript", label="OnScriptLoaded", script="script_a", expect_string_value="loaded!"
AssertNoCallbackResponsesEmitted
// reload script_a, with the same content
ReloadScriptFrom script="script_a", path="lifecycle.lua"
RunUpdateOnce
AssertCallbackSuccess attachment="StaticScript", label="OnScriptUnloaded", script="script_a", expect_string_value="unloaded!"
AssertCallbackSuccess attachment="StaticScript", label="OnScriptLoaded", script="script_a", expect_string_value="loaded!"
AssertCallbackSuccess attachment="StaticScript", label="OnScriptReloaded", script="script_a", expect_string_value="reloaded with: unloaded!"
AssertNoCallbackResponsesEmitted
// now first drop the script asset, assert that does nothing yet
DropScriptAsset script="script_a"
RunUpdateOnce
AssertNoCallbackResponsesEmitted
// now detach the script, expect unloading
DetachStaticScript script="script_a"
RunUpdateOnce
AssertCallbackSuccess attachment="StaticScript", label="OnScriptUnloaded", script="script_a", expect_string_value="unloaded!"
AssertNoCallbackResponsesEmitted
AssertContextResidents attachment="StaticScript", script="script_a", residents_num=0