Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: libadblockplus-android-tests/src/org/adblockplus/libadblockplus/tests/JsEngineTest.java

Issue 29344967: Issue 4031 - Implement tests for libadblockplus-android (Closed)
Patch Set: Updated tests, also moved to libadblockplus-android repo Created June 21, 2016, 10:51 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 /*
2 * This file is part of Adblock Plus <https://adblockplus.org/>,
3 * Copyright (C) 2006-2016 Eyeo GmbH
4 *
5 * Adblock Plus is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 3 as
7 * published by the Free Software Foundation.
8 *
9 * Adblock Plus is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18 package org.adblockplus.libadblockplus.tests;
19
20 import org.adblockplus.libadblockplus.AdblockPlusException;
21 import org.adblockplus.libadblockplus.EventCallback;
22 import org.adblockplus.libadblockplus.JsValue;
23
24 import org.junit.Test;
25
26 import java.util.List;
27
28 public class JsEngineTest extends BaseJsTest {
29
30 @Test
31 public void testEvaluate() {
32 jsEngine.evaluate("function hello() { return 'Hello'; }");
33 JsValue result = jsEngine.evaluate("hello()");
34 assertTrue(result.isString());
35 assertEquals("Hello", result.asString());
36 }
37
38 @Test
39 public void testRuntimeExceptionIsThrown() {
40 try {
41 jsEngine.evaluate("doesnotexist()");
42 fail();
43 } catch (AdblockPlusException e) {
44 // ignored
45 }
46 }
47
48 @Test
49 public void testCompileTimeExceptionIsThrown() {
50 try {
51 jsEngine.evaluate("'foo'bar'");
52 fail();
53 } catch (AdblockPlusException e) {
54 // ignored
55 }
56 }
57
58 @Test
59 public void testValueCreation() {
60 JsValue value;
61
62 final String STRING_VALUE = "foo";
63 value = jsEngine.newValue(STRING_VALUE);
64 assertTrue(value.isString());
65 assertEquals(STRING_VALUE, value.asString());
66
67 final long LONG_VALUE = 12345678901234l;
68 value = jsEngine.newValue(LONG_VALUE);
69 assertTrue(value.isNumber());
70 assertEquals(LONG_VALUE, value.asLong());
71
72 final boolean BOOLEAN_VALUE = true;
73 value = jsEngine.newValue(BOOLEAN_VALUE);
74 assertTrue(value.isBoolean());
75 assertEquals(BOOLEAN_VALUE, value.asBoolean());
76 }
77
78 private boolean callbackCalled;
79 private List<JsValue> callbackParams;
80 private EventCallback callback = new EventCallback() {
81 @Override
82 public void eventCallback(List<JsValue> params) {
83 callbackCalled = true;
84 callbackParams = params;
85 }
86 };
87
88 @Test
89 public void testEventCallbacks() {
90 callbackCalled = false;
91
92 // Trigger event without a callback
93 callbackCalled = false;
94 jsEngine.evaluate("_triggerEvent('foobar')");
95 assertFalse(callbackCalled);
96
97 // Set callback
98 final String EVENT_NAME = "foobar";
99 jsEngine.setEventCallback(EVENT_NAME, callback);
100 callbackCalled = false;
101 jsEngine.evaluate("_triggerEvent('foobar', 1, 'x', true)");
102 assertTrue(callbackCalled);
103 assertNotNull(callbackParams);
104 assertEquals(3, callbackParams.size());
105 assertEquals(1, callbackParams.get(0).asLong());
106 assertEquals("x", callbackParams.get(1).asString());
107 assertTrue(callbackParams.get(2).asBoolean());
108
109 // Trigger a different event
110 callbackCalled = false;
111 jsEngine.evaluate("_triggerEvent('barfoo')");
112 assertFalse(callbackCalled);
113
114 // Remove callback
115 jsEngine.removeEventCallback(EVENT_NAME);
116 callbackCalled = false;
117 jsEngine.evaluate("_triggerEvent('foobar')");
118 assertFalse(callbackCalled);
119 }
120 }
OLDNEW

Powered by Google App Engine
This is Rietveld