| 34 | } |
| 35 | |
| 36 | TEST_F(LuaUtilPackageTest, Vector2) |
| 37 | { |
| 38 | sol::state_view lua = mLuaState.unsafeState(); |
| 39 | lua.safe_script("v = util.vector2(3, 4)"); |
| 40 | EXPECT_FLOAT_EQ(get<float>(lua, "v.x"), 3); |
| 41 | EXPECT_FLOAT_EQ(get<float>(lua, "v.y"), 4); |
| 42 | EXPECT_EQ(get<std::string>(lua, "tostring(v)"), "(3, 4)"); |
| 43 | EXPECT_FLOAT_EQ(get<float>(lua, "v:length()"), 5); |
| 44 | EXPECT_FLOAT_EQ(get<float>(lua, "v:length2()"), 25); |
| 45 | EXPECT_FALSE(get<bool>(lua, "util.vector2(1, 2) == util.vector2(1, 3)")); |
| 46 | EXPECT_TRUE(get<bool>(lua, "util.vector2(1, 2) + util.vector2(2, 5) == util.vector2(3, 7)")); |
| 47 | EXPECT_TRUE(get<bool>(lua, "util.vector2(1, 2) - util.vector2(2, 5) == -util.vector2(1, 3)")); |
| 48 | EXPECT_TRUE(get<bool>(lua, "util.vector2(1, 2) == util.vector2(2, 4) / 2")); |
| 49 | EXPECT_TRUE(get<bool>(lua, "util.vector2(1, 2) * 2 == util.vector2(2, 4)")); |
| 50 | EXPECT_FLOAT_EQ(get<float>(lua, "util.vector2(3, 2) * v"), 17); |
| 51 | EXPECT_FLOAT_EQ(get<float>(lua, "util.vector2(3, 2):dot(v)"), 17); |
| 52 | EXPECT_ERROR(lua.safe_script("v2, len = v.normalize()"), |
| 53 | "value is not a valid userdata"); // checks that it doesn't segfault |
| 54 | lua.safe_script("v2, len = v:normalize()"); |
| 55 | EXPECT_FLOAT_EQ(get<float>(lua, "len"), 5); |
| 56 | EXPECT_TRUE(get<bool>(lua, "v2 == util.vector2(3/5, 4/5)")); |
| 57 | lua.safe_script("_, len = util.vector2(0, 0):normalize()"); |
| 58 | EXPECT_FLOAT_EQ(get<float>(lua, "len"), 0); |
| 59 | lua.safe_script("ediv0 = util.vector2(1, 0):ediv(util.vector2(0, 0))"); |
| 60 | EXPECT_TRUE(get<bool>(lua, "ediv0.x == math.huge and ediv0.y ~= ediv0.y")); |
| 61 | EXPECT_TRUE(get<bool>(lua, "util.vector2(1, 2):emul(util.vector2(3, 4)) == util.vector2(3, 8)")); |
| 62 | EXPECT_TRUE(get<bool>(lua, "util.vector2(4, 6):ediv(util.vector2(2, 3)) == util.vector2(2, 2)")); |
| 63 | lua.safe_script("swizzle = util.vector2(1, 2)"); |
| 64 | EXPECT_TRUE(get<bool>(lua, "swizzle.xx == util.vector2(1, 1) and swizzle.yy == util.vector2(2, 2)")); |
| 65 | EXPECT_TRUE(get<bool>(lua, "swizzle.y0 == util.vector2(2, 0) and swizzle.x1 == util.vector2(1, 1)")); |
| 66 | EXPECT_TRUE(get<bool>(lua, "swizzle['01'] == util.vector2(0, 1) and swizzle['0y'] == util.vector2(0, 2)")); |
| 67 | } |
| 68 | |
| 69 | TEST_F(LuaUtilPackageTest, Vector3) |
| 70 | { |
nothing calls this directly
no test coverage detected