Files
flipper/android/tests/plugins/console/JavascriptSessionTest.java
Daniel Büchele fbbf8cf16b Initial commit 🎉
fbshipit-source-id: b6fc29740c6875d2e78953b8a7123890a67930f2
Co-authored-by: Sebastian McKenzie <sebmck@fb.com>
Co-authored-by: John Knox <jknox@fb.com>
Co-authored-by: Emil Sjölander <emilsj@fb.com>
Co-authored-by: Pritesh Nandgaonkar <prit91@fb.com>
2018-06-01 11:03:58 +01:00

110 lines
3.6 KiB
Java

/*
* Copyright (c) 2018-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the LICENSE
* file in the root directory of this source tree.
*
*/
package com.facebook.sonar.plugins.console;
import static org.junit.Assert.assertEquals;
import com.facebook.testing.robolectric.v3.WithTestDefaultsRunner;
import com.google.common.collect.ImmutableMap;
import java.util.Collections;
import java.util.HashMap;
import org.json.JSONObject;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mozilla.javascript.ContextFactory;
@RunWith(WithTestDefaultsRunner.class)
public class JavascriptSessionTest {
ContextFactory mContextFactory = new ContextFactory();
@Test
public void testSimpleExpressionsEvaluate() throws Exception {
JavascriptSession session =
new JavascriptSession(mContextFactory, Collections.<String, Object>emptyMap());
JSONObject json = session.evaluateCommand("2+2-1");
assertEquals(3, json.getInt("value"));
}
@Test
public void testStatePersistsBetweenCommands() throws Exception {
JavascriptSession session =
new JavascriptSession(mContextFactory, Collections.<String, Object>emptyMap());
session.evaluateCommand("var x = 10;");
JSONObject json = session.evaluateCommand("x");
assertEquals(10, json.getInt("value"));
}
@Test
public void testVariablesGetBoundCorrectly() throws Exception {
JavascriptSession session =
new JavascriptSession(
mContextFactory,
ImmutableMap.<String, Object>of(
"a", 2,
"b", 2));
JSONObject json = session.evaluateCommand("a+b");
assertEquals("json", json.getString("type"));
assertEquals(4, json.getInt("value"));
}
@Test
public void testNumberEvaluation() throws Exception {
assertEquals(4, evaluateWithNoGlobals("4").getInt("value"));
}
@Test
public void testStringEvaluation() throws Exception {
assertEquals("hello", evaluateWithNoGlobals("\"hello\"").getString("value"));
}
@Test
public void testJavaObjectEvaluation() throws Exception {
JavascriptSession session =
new JavascriptSession(
mContextFactory,
ImmutableMap.<String, Object>of("object", new HashMap<String, String>()));
JSONObject json = session.evaluateCommand("object");
assertEquals("javaObject", json.getString("type"));
assertEquals("{}", json.getJSONObject("value").getString("toString"));
}
@Test
public void testJavaMethodEvaluation() throws Exception {
JavascriptSession session =
new JavascriptSession(
mContextFactory,
ImmutableMap.<String, Object>of("object", new HashMap<String, String>()));
JSONObject json = session.evaluateCommand("object.get");
assertEquals("method", json.getString("type"));
}
@Test
public void testJsFunctionEvaluation() throws Exception {
JSONObject json = evaluateWithNoGlobals("function() {}");
assertEquals("function", json.getString("type"));
assertEquals("function(){}", removeWhitespace(json.getString("value")));
}
@Test
public void testNullEvaluation() throws Exception {
assertEquals("null", evaluateWithNoGlobals("null").getString("type"));
assertEquals("null", evaluateWithNoGlobals("undefined").getString("type"));
}
private static String removeWhitespace(String input) {
return input.replaceAll("\\s", "");
}
private JSONObject evaluateWithNoGlobals(String input) throws Exception {
JavascriptSession session =
new JavascriptSession(mContextFactory, new HashMap<String, Object>());
return session.evaluateCommand(input);
}
}