diff options
Diffstat (limited to 'infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/JavaAcessibilityTest.java')
-rw-r--r-- | infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/JavaAcessibilityTest.java | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/JavaAcessibilityTest.java b/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/JavaAcessibilityTest.java new file mode 100644 index 0000000..b6cf3ca --- /dev/null +++ b/infrastructure/rhino1_7R1/testsrc/org/mozilla/javascript/tests/JavaAcessibilityTest.java @@ -0,0 +1,99 @@ +/** + * + */ +package org.mozilla.javascript.tests; + +import junit.framework.TestCase; + +import org.mozilla.javascript.Context; +import org.mozilla.javascript.ContextAction; +import org.mozilla.javascript.ContextFactory; +import org.mozilla.javascript.NativeJavaObject; +import org.mozilla.javascript.Script; +import org.mozilla.javascript.tools.shell.Global; +import org.mozilla.javascript.tools.shell.ShellContextFactory; + +/** + * @author donnamalayeri + */ +public class JavaAcessibilityTest extends TestCase { + + protected final Global global = new Global(); + String importClass = "importClass(Packages.org.mozilla.javascript.tests.PrivateAccessClass)\n"; + + public JavaAcessibilityTest() { + global.init(contextFactory); + } + + private ContextFactory contextFactory = new ShellContextFactory() { + protected boolean hasFeature(Context cx, int featureIndex) { + if (featureIndex == Context.FEATURE_ENHANCED_JAVA_ACCESS) + return true; + return super.hasFeature(cx, featureIndex); + } + }; + + public void testAccessingFields() { + Object result = runScript(importClass + "PrivateAccessClass.staticPackagePrivateInt"); + assertEquals(new Integer(0), result); + + result = runScript(importClass + "PrivateAccessClass.staticPrivateInt"); + assertEquals(new Integer(1), result); + + result = runScript(importClass + "PrivateAccessClass.staticProtectedInt"); + assertEquals(new Integer(2), result); + + result = runScript(importClass + "new PrivateAccessClass().packagePrivateString"); + assertEquals("package private", ((NativeJavaObject) result).unwrap()); + + result = runScript(importClass + "new PrivateAccessClass().privateString"); + assertEquals("private", ((NativeJavaObject) result).unwrap()); + + result = runScript(importClass + "new PrivateAccessClass().protectedString"); + assertEquals("protected", ((NativeJavaObject) result).unwrap()); + + result = runScript(importClass + "new PrivateAccessClass.PrivateNestedClass().packagePrivateInt"); + assertEquals(new Integer(0), result); + + result = runScript(importClass + "new PrivateAccessClass.PrivateNestedClass().privateInt"); + assertEquals(new Integer(1), result); + + result = runScript(importClass + "new PrivateAccessClass.PrivateNestedClass().protectedInt"); + assertEquals(new Integer(2), result); + } + + public void testAccessingMethods() { + Object result = runScript(importClass + "PrivateAccessClass.staticPackagePrivateMethod()"); + assertEquals(new Integer(0), result); + + result = runScript(importClass + "PrivateAccessClass.staticPrivateMethod()"); + assertEquals(new Integer(1), result); + + result = runScript(importClass + "PrivateAccessClass.staticProtectedMethod()"); + assertEquals(new Integer(2), result); + + result = runScript(importClass + "new PrivateAccessClass().packagePrivateMethod()"); + assertEquals(new Integer(3), result); + + result = runScript(importClass + "new PrivateAccessClass().privateMethod()"); + assertEquals(new Integer(4), result); + + result = runScript(importClass + "new PrivateAccessClass().protectedMethod()"); + assertEquals(new Integer(5), result); + } + + public void testAccessingConstructors() { + runScript(importClass + "new PrivateAccessClass(\"foo\")"); + runScript(importClass + "new PrivateAccessClass(5)"); + runScript(importClass + "new PrivateAccessClass(5, \"foo\")"); + } + + private Object runScript(final String scriptSourceText) { + return this.contextFactory.call(new ContextAction() { + public Object run(Context context) { + Script script = context.compileString(scriptSourceText, "", 1, null); + return script.exec(context, global); + } + }); + } +} |