| require("director_enum") | |
| catch_undef_globs() -- catch "undefined" global variables | |
| -- Test director with enum parameters | |
| -- Create a derived class that overrides say_hi | |
| local MyFoo = {} | |
| MyFoo.__index = MyFoo | |
| setmetatable(MyFoo, { __index = director_enum.Foo }) | |
| function MyFoo:new() | |
| local obj = director_enum.Foo() | |
| -- Use SWIG-provided helper to set multiple overrides at once | |
| swig_derive(obj, { | |
| say_hi = function(self, val) | |
| return val | |
| end | |
| }) | |
| return obj | |
| end | |
| -- Create instances | |
| local b = director_enum.Foo() | |
| local a = MyFoo:new() | |
| -- Test enum handling through director | |
| -- a.say_hi should return the value passed to it | |
| -- b.say_hello should swap hi <-> hello | |
| local result_a = a:say_hi(director_enum.hello) | |
| local result_b = b:say_hello(director_enum.hi) | |
| -- say_hello(hi) should return hello (it swaps) | |
| -- say_hi(hello) should return hello (our override just returns the value) | |
| -- So both should be equal to 'hello' | |
| assert(result_a == result_b, "enum director test failed: expected same result") | |
| assert(result_a == director_enum.hello, "expected hello enum value") | |
| --print("All director_enum tests passed!") |