Fix Globals.load() to call the library with an empty modname and the globals as the environment. Change standard libraries to be called with two arguments, a modname and an environment.

This commit is contained in:
James Roseborough
2013-07-04 15:54:36 +00:00
parent 120ac758c4
commit 9b59234327
18 changed files with 52 additions and 53 deletions

View File

@@ -2,8 +2,7 @@ package org.luaj.vm2;
import junit.framework.TestCase;
import org.luaj.vm2.lib.MathLib;
import org.luaj.vm2.lib.jse.JseMathLib;
import org.luaj.vm2.lib.jme.JmePlatform;
import org.luaj.vm2.lib.jse.JsePlatform;
public class MathLibTest extends TestCase {
@@ -13,10 +12,8 @@ public class MathLibTest extends TestCase {
private boolean supportedOnJ2me;
public MathLibTest() {
LuaValue g = JsePlatform.standardGlobals();
j2se = g.get("math");
g.load( new MathLib() );
j2me = g.get("math");
j2se = JsePlatform.standardGlobals().get("math");
j2me = JmePlatform.standardGlobals().get("math");
}
protected void setUp() throws Exception {

View File

@@ -16,12 +16,17 @@ public class RequireClassTest extends TestCase {
globals = JsePlatform.standardGlobals();
require = globals.get("require");
}
public void testLoadClass() {
LuaValue result = globals.load(new org.luaj.vm2.require.RequireSampleSuccess());
assertEquals( "require-sample-success-", result.tojstring() );
}
public void testRequireClassSuccess() {
LuaValue result = require.call( LuaValue.valueOf("org.luaj.vm2.require.RequireSampleSuccess") );
assertEquals( "require-sample-success", result.tojstring() );
assertEquals( "require-sample-success-org.luaj.vm2.require.RequireSampleSuccess", result.tojstring() );
result = require.call( LuaValue.valueOf("org.luaj.vm2.require.RequireSampleSuccess") );
assertEquals( "require-sample-success", result.tojstring() );
assertEquals( "require-sample-success-org.luaj.vm2.require.RequireSampleSuccess", result.tojstring() );
}
public void testRequireClassLoadLuaError() {

View File

@@ -1,17 +1,18 @@
package org.luaj.vm2.require;
import org.luaj.vm2.LuaValue;
import org.luaj.vm2.lib.ZeroArgFunction;
import org.luaj.vm2.lib.TwoArgFunction;
/**
* This should succeed as a library that can be loaded dynamically via "require()"
*/
public class RequireSampleSuccess extends ZeroArgFunction {
public class RequireSampleSuccess extends TwoArgFunction {
public RequireSampleSuccess() {
}
public LuaValue call() {
return LuaValue.valueOf("require-sample-success");
public LuaValue call(LuaValue modname, LuaValue env) {
env.checkglobals();
return LuaValue.valueOf("require-sample-success-"+modname.tojstring());
}
}