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

rhino1.7.7.testsrc.org.mozilla.javascript.tests.Bug714204Test 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 static org.junit.Assert.*;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.EvaluatorException;
import org.mozilla.javascript.Script;
import org.mozilla.javascript.ScriptableObject;

/**
 * @author André Bargull
 * 
 */
public class Bug714204Test {
    private Context cx;
    private ScriptableObject scope;

    @Before
    public void setUp() {
        cx = Context.enter();
        scope = cx.initStandardObjects();
        cx.setLanguageVersion(170);
    }

    @After
    public void tearDown() {
        Context.exit();
    }

    @Test
    public void test_assign_this() {
        StringBuilder sb = new StringBuilder();
        sb.append("function F() {\n");
        sb.append("  [this.x] = arguments;\n");
        sb.append("}\n");
        sb.append("var f = new F('a');\n");
        sb.append("(f.x == 'a')\n");
        Script script = cx.compileString(sb.toString(), "", 1, null);
        Object result = script.exec(cx, scope);
        assertEquals(Boolean.TRUE, result);
    }

    @Test(expected = EvaluatorException.class)
    public void test_var_this() {
        StringBuilder sb = new StringBuilder();
        sb.append("function F() {\n");
        sb.append("  var [this.x] = arguments;\n");
        sb.append("}\n");
        cx.compileString(sb.toString(), "", 1, null);
    }

    @Test(expected = EvaluatorException.class)
    public void test_let_this() {
        StringBuilder sb = new StringBuilder();
        sb.append("function F() {\n");
        sb.append("  let [this.x] = arguments;\n");
        sb.append("}\n");
        cx.compileString(sb.toString(), "", 1, null);
    }

    @Test(expected = EvaluatorException.class)
    public void test_const_this() {
        StringBuilder sb = new StringBuilder();
        sb.append("function F() {\n");
        sb.append("  const [this.x] = arguments;\n");
        sb.append("}\n");
        cx.compileString(sb.toString(), "", 1, null);
    }

    @Test(expected = EvaluatorException.class)
    public void test_args_this() {
        StringBuilder sb = new StringBuilder();
        sb.append("function F([this.x]) {\n");
        sb.append("}\n");
        cx.compileString(sb.toString(), "", 1, null);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy