All Downloads are FREE. Search and download functionalities are using the official Maven repository.

rhino1.7.6.testsrc.org.mozilla.javascript.tests.Bug467396Test Maven / Gradle / Ivy

Go to download

Rhino is an open-source implementation of JavaScript written entirely in Java. It is typically embedded into Java applications to provide scripting to end users.

There is a newer version: 1.7.15
Show newest version
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

package org.mozilla.javascript.tests;

import org.mozilla.javascript.Context;
import org.mozilla.javascript.ContextFactory;
import org.mozilla.javascript.Scriptable;
import org.mozilla.javascript.Wrapper;
import junit.framework.TestCase;

/**
 * Test for overloaded varargs/non-varargs methods.
 * See https://bugzilla.mozilla.org/show_bug.cgi?id=467396
 * @author Hannes Wallnoefer
 */
public class Bug467396Test extends TestCase {

    public void testOverloadedVarargs() {
        Context cx = ContextFactory.getGlobal().enterContext();
        try {
            Scriptable scope = cx.initStandardObjects();
            Object result = unwrap(cx.evaluateString(scope,
                    "java.lang.reflect.Array.newInstance(java.lang.Object, 1)",
                    "source", 1, null));
            assertTrue(result instanceof Object[]);
            assertEquals(1, ((Object[]) result).length);
            result = unwrap(cx.evaluateString(scope,
                    "java.lang.reflect.Array.newInstance(java.lang.Object, [1])",
                    "source", 1, null));
            assertTrue(result instanceof Object[]);
            assertEquals(1, ((Object[]) result).length);
            result = unwrap(cx.evaluateString(scope,
                    "java.lang.reflect.Array.newInstance(java.lang.Object, [1, 1])",
                    "source", 1, null));
            assertTrue(result instanceof Object[][]);
            assertEquals(1, ((Object[][]) result).length);
            assertEquals(1, ((Object[][]) result)[0].length);
            result = unwrap(cx.evaluateString(scope,
                    "java.lang.reflect.Array.newInstance(java.lang.Object, 1, 1)",
                    "source", 1, null));
            assertTrue(result instanceof Object[][]);
            assertEquals(1, ((Object[][]) result).length);
            assertEquals(1, ((Object[][]) result)[0].length);
        } finally {
            Context.exit();
        }
    }


    private Object unwrap(Object obj) {
        return obj instanceof Wrapper ? ((Wrapper) obj).unwrap() : obj;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy