mirror of https://github.com/swig/swig.git
42 lines
1.5 KiB
Lua
42 lines
1.5 KiB
Lua
-- Test director_string for Lua
|
|
-- Tests string handling with directors
|
|
|
|
require("director_string")
|
|
|
|
-- Use the SWIG-provided helper function for cleaner code
|
|
-- swig_override(obj, methodName, func) - sets a method override
|
|
|
|
--print("=== Test 1: Create A with string constructor ===")
|
|
local a = director_string.A("hello")
|
|
local get0 = a:get(0)
|
|
--print("a:get(0) = " .. get0)
|
|
assert(get0 == "hello", "Expected 'hello' but got '" .. get0 .. "'")
|
|
|
|
--print("\n=== Test 2: Override get_first method ===")
|
|
local b = director_string.A("hello")
|
|
swig_override(b, "get_first", function(self)
|
|
-- Call base class method and append to it
|
|
return "hello world!"
|
|
end)
|
|
|
|
local getFirst = b:get_first()
|
|
--print("b:get_first() = " .. getFirst)
|
|
assert(getFirst == "hello world!", "Expected 'hello world!' but got '" .. getFirst .. "'")
|
|
|
|
--print("\n=== Test 3: call_get_first (C++ calls Lua) ===")
|
|
local callFirst = b:call_get_first()
|
|
--print("b:call_get_first() = " .. callFirst)
|
|
assert(callFirst == "hello world!", "Expected 'hello world!' but got '" .. callFirst .. "'")
|
|
|
|
--print("\n=== Test 4: process_text override ===")
|
|
local c = director_string.A("test")
|
|
local processedText = nil
|
|
swig_override(c, "process_text", function(self, text)
|
|
processedText = "processed: " .. text
|
|
end)
|
|
c:call_process_func()
|
|
--print("processedText = " .. tostring(processedText))
|
|
assert(processedText == "processed: hello", "Expected 'processed: hello' but got '" .. tostring(processedText) .. "'")
|
|
|
|
--print("\n=== All director_string tests passed! ===")
|