Skip to content

Commit 25a9a54

Browse files
committed
add more tests
1 parent 116d724 commit 25a9a54

File tree

3 files changed

+84
-3
lines changed

3 files changed

+84
-3
lines changed

test/test_04_lua_function.cpp

Lines changed: 51 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,38 @@ void corresult_to_main2(kaguya::VariadicArgType args)
175175
}
176176

177177

178+
int coroutine_exec(kaguya::LuaThread cor)
179+
{
180+
return cor.resume<int>() * 2;
181+
}
182+
183+
KAGUYA_TEST_FUNCTION_DEF(coroutine_on_the_coroutine)(kaguya::State& state)
184+
{
185+
TEST_CHECK(state("cor1 = coroutine.create( function()"
186+
"coroutine.yield(32) "
187+
"coroutine.yield(53) "
188+
"return 2 "
189+
" end)"));
190+
191+
state["coroutine_exec"] = coroutine_exec;
192+
193+
TEST_CHECK(state("cor2 = coroutine.wrap( function()"
194+
"coroutine.yield(coroutine_exec(cor1)) "
195+
"coroutine.yield(coroutine_exec(cor1)) "
196+
"return 4 "
197+
" end)"));
198+
199+
kaguya::LuaRef cor = state["cor2"];
200+
int r1 = cor();
201+
int r2 = cor();
202+
int r3 = cor();
203+
204+
TEST_EQUAL(r1, 32*2);
205+
TEST_EQUAL(r2, 53*2);
206+
TEST_EQUAL(r3, 4);
207+
}
208+
209+
178210
KAGUYA_TEST_FUNCTION_DEF(coroutine_stack)(kaguya::State& state)
179211
{
180212
state["corresult_to_main"] = &corresult_to_main;
@@ -226,7 +258,7 @@ KAGUYA_TEST_FUNCTION_DEF(bind_to_std_function)(kaguya::State& state)
226258
}
227259

228260

229-
KAGUYA_TEST_FUNCTION_DEF(zero_to_nullpointer)(kaguya::State& state)
261+
KAGUYA_TEST_FUNCTION_DEF(call_error)(kaguya::State& state)
230262
{
231263
state.setErrorHandler(ignore_error_fun);
232264

@@ -243,12 +275,28 @@ KAGUYA_TEST_FUNCTION_DEF(zero_to_nullpointer)(kaguya::State& state)
243275
kaguya::LuaFunction nilfn;
244276
nilfn.call<void>();
245277
}
246-
278+
{
279+
last_error_message = "";
280+
kaguya::LuaFunction notfn = state.newTable();
281+
TEST_COMPARE_NE(last_error_message, "");
282+
notfn.call<void>();
283+
}
247284
}
248285

249286

250-
KAGUYA_TEST_FUNCTION_DEF(result_range_based_for)(kaguya::State& state)
287+
KAGUYA_TEST_FUNCTION_DEF(function_result_for)(kaguya::State& state)
251288
{
289+
{
290+
const kaguya::FunctionResults empty;
291+
TEST_EQUAL(empty.result_size(), 0);
292+
std::vector<int> res;
293+
for (kaguya::FunctionResults::iterator it = empty.begin(); it != empty.end(); ++it)
294+
{
295+
res.push_back(*it);
296+
}
297+
TEST_EQUAL(res.size(), 0);
298+
}
299+
252300
state("fn =function() return 1,2,4,8,16 end");
253301
{
254302
std::vector<int> res;

test/test_05_lua_ref.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,12 @@ KAGUYA_TEST_FUNCTION_DEF(nostate_ref_error)(kaguya::State& state)
506506
TEST_CHECK(!v.setFunctionEnv(state.newTable()));
507507
TEST_CHECK(!v.getFunctionEnv());
508508
TEST_CHECK(!v.getField("s"));
509+
TEST_CHECK(!v.setField("s", 2));
510+
TEST_CHECK(!v.setField("s", "a"));
511+
TEST_CHECK(!v.setField("s", std::string("a")));
512+
TEST_CHECK(!v.setField("s", table));
513+
TEST_CHECK(!v.setField("s", kaguya::NilValue()));
514+
TEST_CHECK(!v.setField(kaguya::NilValue(), kaguya::NilValue()));
509515

510516

511517
TEST_CHECK(!table.getFunctionEnv());
@@ -523,6 +529,7 @@ KAGUYA_TEST_FUNCTION_DEF(nostate_ref_error)(kaguya::State& state)
523529

524530
TEST_CHECK(!cv.getFunctionEnv());
525531
TEST_CHECK(!cv.getField("s"));
532+
TEST_CHECK(!cv.getField<int>("s"));
526533

527534

528535
TEST_CHECK(!ctable.getFunctionEnv());

test/test_09_utility.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#include "kaguya/kaguya.hpp"
2+
#include "test_util.hpp"
3+
4+
KAGUYA_TEST_GROUP_START(test_09_utility)
5+
6+
using namespace kaguya_test_util;
7+
8+
9+
KAGUYA_TEST_FUNCTION_DEF(resume)(kaguya::State& s)
10+
{
11+
using namespace kaguya;
12+
13+
14+
LuaThread t = s.newThread(s.loadstring("v={...}"));
15+
16+
lua_State* co = t.get<lua_State*>();
17+
lua_pushnumber(co, 2);
18+
lua_pushnumber(co, 3);
19+
20+
lua_resume(co,s.state(),2);
21+
22+
TEST_EQUAL(s["v"][1], 2);
23+
TEST_EQUAL(s["v"][2], 3);
24+
}
25+
26+
KAGUYA_TEST_GROUP_END(test_09_utility)

0 commit comments

Comments
 (0)