diff --git a/kiss/src/test/cases/MacroTestCase.hx b/kiss/src/test/cases/MacroTestCase.hx index 61da65ec..24454a22 100644 --- a/kiss/src/test/cases/MacroTestCase.hx +++ b/kiss/src/test/cases/MacroTestCase.hx @@ -32,4 +32,12 @@ class MacroTestCase extends Test { function testUndefMacro() { Assert.equals(11, andValue()); } + + function testRecursiveMacroFunction() { + _testRecursiveMacroFunction(); + } + + function testPrintAtMacroTime() { + _testPrintAtMacroTime(); + } } diff --git a/kiss/src/test/cases/MacroTestCase.kiss b/kiss/src/test/cases/MacroTestCase.kiss index d798e3f9..de9e87cd 100644 --- a/kiss/src/test/cases/MacroTestCase.kiss +++ b/kiss/src/test/cases/MacroTestCase.kiss @@ -49,3 +49,25 @@ (undefMacro and) (function and [a b] (+ a b)) (function andValue [] (and 5 6)) + +(defMacro listOfExp [exp times] + (let [times (eval times)] + (_listOfExp exp times))) + +(defMacroFunction _listOfExp [exp times] + (case times + (1 `[,exp]) + (otherwise `(.concat ,(_listOfExp exp 1) ,(_listOfExp exp (- times 1)))))) + +(function _testRecursiveMacroFunction [] + (Assert.equals (Std.string [10 10 10 10 10 10 10 10 10 10]) (Std.string (listOfExp 10 10)))) + +(defMacroFunction printAtMacroTime [] + ~"Print at macro time should work just fine" + `null) + +(defMacro _testPrintAtMacroTimeMacro [] + (printAtMacroTime)) + +(function testPrintAtMacroTime [] + (_testPrintAtMacroTimeMacro)) \ No newline at end of file