Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 13 additions & 5 deletions unity/native/papi-lua/source/PesapiLuaImpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -313,35 +313,43 @@ int pesapi_is_int32(pesapi_env env, pesapi_value pvalue)
{
lua_State* L = luaStateFromPesapiEnv(env);
int idx = luaValueFromPesapiValue(pvalue);
return lua_type(L, idx) == LUA_TNUMBER;
if (!lua_isinteger(L, idx)) {
return 0;
}
const lua_Integer value = lua_tointeger(L, idx);
return value >= INT32_MIN && value <= INT32_MAX;
}

int pesapi_is_uint32(pesapi_env env, pesapi_value pvalue)
{
lua_State* L = luaStateFromPesapiEnv(env);
int idx = luaValueFromPesapiValue(pvalue);
return lua_type(L, idx) == LUA_TNUMBER;
if (!lua_isinteger(L, idx)) {
return 0;
}
const lua_Integer value = lua_tointeger(L, idx);
return value >= 0 && static_cast<uint64_t>(value) <= UINT32_MAX;
}

int pesapi_is_int64(pesapi_env env, pesapi_value pvalue)
{
lua_State* L = luaStateFromPesapiEnv(env);
int idx = luaValueFromPesapiValue(pvalue);
return lua_type(L, idx) == LUA_TNUMBER;
return lua_isinteger(L, idx);
}

int pesapi_is_uint64(pesapi_env env, pesapi_value pvalue)
{
lua_State* L = luaStateFromPesapiEnv(env);
int idx = luaValueFromPesapiValue(pvalue);
return lua_type(L, idx) == LUA_TNUMBER;
return lua_isinteger(L, idx) && lua_tointeger(L, idx) >= 0;
}

int pesapi_is_double(pesapi_env env, pesapi_value pvalue)
{
lua_State* L = luaStateFromPesapiEnv(env);
int idx = luaValueFromPesapiValue(pvalue);
return lua_type(L, idx) == LUA_TNUMBER;
return lua_isnumber(L, idx) && !lua_isinteger(L, idx);
}

int pesapi_is_string(pesapi_env env, pesapi_value pvalue)
Expand Down
12 changes: 6 additions & 6 deletions unity/test/Src/Cases/Lua/CrossLang/CrossLangTest.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using NUnit.Framework;
using NUnit.Framework;
using System;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
Expand Down Expand Up @@ -208,7 +208,7 @@ public void NativeStructInstanceLuaTest()
local testHelper = TestHelper.GetInstance()

local outRef = {}
local oNativeStruct = CS.Puerts.UnitTest.TestStruct(1)
local oNativeStruct = CS.Puerts.UnitTest.TestStruct(1.0)
outRef[1] = oNativeStruct

local rNativeStruct = testHelper:NativeStructTestPipeLine(oNativeStruct, outRef, function(obj)
Expand All @@ -219,10 +219,10 @@ public void NativeStructInstanceLuaTest()
assertAndPrint('LuaGetNativeStructOutArgFromCS', outRef[1].value, oNativeStruct.value)
assertAndPrint('LuaGetNativeStructReturnFromCS', rNativeStruct.value, oNativeStruct.value)

testHelper.nativeStructTestField = CS.Puerts.UnitTest.TestStruct(765)
testHelper.nativeStructTestProp = CS.Puerts.UnitTest.TestStruct(765)
TestHelper.nativeStructTestFieldStatic = CS.Puerts.UnitTest.TestStruct(765)
TestHelper.nativeStructTestPropStatic = CS.Puerts.UnitTest.TestStruct(765)
testHelper.nativeStructTestField = CS.Puerts.UnitTest.TestStruct(765.0)
testHelper.nativeStructTestProp = CS.Puerts.UnitTest.TestStruct(765.0)
TestHelper.nativeStructTestFieldStatic = CS.Puerts.UnitTest.TestStruct(765.0)
TestHelper.nativeStructTestPropStatic = CS.Puerts.UnitTest.TestStruct(765.0)
testHelper:NativeStructTestCheckMemberValue()
");
luaEnv.Dispose();
Expand Down
Loading