| 5 | using namespace Star; |
| 6 | |
| 7 | TEST(LuaJsonTest, Scope) { |
| 8 | auto engine = LuaEngine::create(); |
| 9 | auto script1 = engine->compile( |
| 10 | R"SCRIPT( |
| 11 | function increment() |
| 12 | self.called = self.called + 1 |
| 13 | return self.called |
| 14 | end |
| 15 | )SCRIPT"); |
| 16 | |
| 17 | auto script2 = engine->compile( |
| 18 | R"SCRIPT( |
| 19 | global = 42 |
| 20 | |
| 21 | function increment() |
| 22 | self.called = self.called + 1 |
| 23 | return self.called |
| 24 | end |
| 25 | )SCRIPT"); |
| 26 | |
| 27 | auto context1 = engine->createContext(); |
| 28 | auto context2 = engine->createContext(); |
| 29 | |
| 30 | context1.load(script1); |
| 31 | context2.load(script2); |
| 32 | |
| 33 | context1.setPath("self", JsonObject{{"called", 0}}); |
| 34 | context2.setPath("self", JsonObject{{"called", 0}}); |
| 35 | |
| 36 | EXPECT_TRUE(context1.contains("self")); |
| 37 | EXPECT_TRUE(context1.contains("increment")); |
| 38 | |
| 39 | EXPECT_EQ(context1.invokePath<Json>("increment"), 1); |
| 40 | EXPECT_EQ(context1.invokePath<Json>("increment"), 2); |
| 41 | EXPECT_EQ(context1.invokePath<Json>("increment"), 3); |
| 42 | EXPECT_EQ(context2.invokePath<Json>("increment"), 1); |
| 43 | EXPECT_EQ(context1.invokePath<Json>("increment"), 4); |
| 44 | EXPECT_EQ(context2.invokePath<Json>("increment"), 2); |
| 45 | |
| 46 | auto context3 = engine->createContext(); |
| 47 | context3.load(script2); |
| 48 | context3.setPath("self", JsonObject{{"called", 0}}); |
| 49 | |
| 50 | EXPECT_EQ(context2.invokePath<Json>("increment"), 3); |
| 51 | EXPECT_EQ(context3.invokePath<Json>("increment"), 1); |
| 52 | EXPECT_EQ(context1.invokePath<Json>("increment"), 5); |
| 53 | |
| 54 | EXPECT_FALSE(context1.contains("global")); |
| 55 | EXPECT_TRUE(context3.contains("global")); |
| 56 | } |
| 57 | |
| 58 | TEST(LuaJsonTest, FunkyRecursion) { |
| 59 | auto engine = LuaEngine::create(); |
nothing calls this directly
no test coverage detected