| OLD | NEW | 
|---|
| (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   { | 
|  | 33     jsEngine.evaluate("function hello() { return 'Hello'; }"); | 
|  | 34     JsValue result = jsEngine.evaluate("hello()"); | 
|  | 35     assertTrue(result.isString()); | 
|  | 36     assertEquals("Hello", result.asString()); | 
|  | 37   } | 
|  | 38 | 
|  | 39   @Test | 
|  | 40   public void testRuntimeExceptionIsThrown() | 
|  | 41   { | 
|  | 42     try | 
|  | 43     { | 
|  | 44       jsEngine.evaluate("doesnotexist()"); | 
|  | 45       fail(); | 
|  | 46     } | 
|  | 47     catch (AdblockPlusException e) | 
|  | 48     { | 
|  | 49       // ignored | 
|  | 50     } | 
|  | 51   } | 
|  | 52 | 
|  | 53   @Test | 
|  | 54   public void testCompileTimeExceptionIsThrown() | 
|  | 55   { | 
|  | 56     try | 
|  | 57     { | 
|  | 58       jsEngine.evaluate("'foo'bar'"); | 
|  | 59       fail(); | 
|  | 60     } | 
|  | 61     catch (AdblockPlusException e) | 
|  | 62     { | 
|  | 63       // ignored | 
|  | 64     } | 
|  | 65   } | 
|  | 66 | 
|  | 67   @Test | 
|  | 68   public void testValueCreation() | 
|  | 69   { | 
|  | 70     JsValue value; | 
|  | 71 | 
|  | 72     final String STRING_VALUE = "foo"; | 
|  | 73     value = jsEngine.newValue(STRING_VALUE); | 
|  | 74     assertTrue(value.isString()); | 
|  | 75     assertEquals(STRING_VALUE, value.asString()); | 
|  | 76 | 
|  | 77     final long LONG_VALUE = 12345678901234l; | 
|  | 78     value = jsEngine.newValue(LONG_VALUE); | 
|  | 79     assertTrue(value.isNumber()); | 
|  | 80     assertEquals(LONG_VALUE, value.asLong()); | 
|  | 81 | 
|  | 82     final boolean BOOLEAN_VALUE = true; | 
|  | 83     value = jsEngine.newValue(BOOLEAN_VALUE); | 
|  | 84     assertTrue(value.isBoolean()); | 
|  | 85     assertEquals(BOOLEAN_VALUE, value.asBoolean()); | 
|  | 86   } | 
|  | 87 | 
|  | 88   private boolean callbackCalled; | 
|  | 89   private List<JsValue> callbackParams; | 
|  | 90   private EventCallback callback = new EventCallback() | 
|  | 91   { | 
|  | 92     @Override | 
|  | 93     public void eventCallback(List<JsValue> params) | 
|  | 94     { | 
|  | 95       callbackCalled = true; | 
|  | 96       callbackParams = params; | 
|  | 97     } | 
|  | 98   }; | 
|  | 99 | 
|  | 100   @Test | 
|  | 101   public void testEventCallbacks() | 
|  | 102   { | 
|  | 103     callbackCalled = false; | 
|  | 104 | 
|  | 105     // Trigger event without a callback | 
|  | 106     callbackCalled = false; | 
|  | 107     jsEngine.evaluate("_triggerEvent('foobar')"); | 
|  | 108     assertFalse(callbackCalled); | 
|  | 109 | 
|  | 110     // Set callback | 
|  | 111     final String EVENT_NAME = "foobar"; | 
|  | 112     jsEngine.setEventCallback(EVENT_NAME, callback); | 
|  | 113     callbackCalled = false; | 
|  | 114     jsEngine.evaluate("_triggerEvent('foobar', 1, 'x', true)"); | 
|  | 115     assertTrue(callbackCalled); | 
|  | 116     assertNotNull(callbackParams); | 
|  | 117     assertEquals(3, callbackParams.size()); | 
|  | 118     assertEquals(1, callbackParams.get(0).asLong()); | 
|  | 119     assertEquals("x", callbackParams.get(1).asString()); | 
|  | 120     assertTrue(callbackParams.get(2).asBoolean()); | 
|  | 121 | 
|  | 122     // Trigger a different event | 
|  | 123     callbackCalled = false; | 
|  | 124     jsEngine.evaluate("_triggerEvent('barfoo')"); | 
|  | 125     assertFalse(callbackCalled); | 
|  | 126 | 
|  | 127     // Remove callback | 
|  | 128     jsEngine.removeEventCallback(EVENT_NAME); | 
|  | 129     callbackCalled = false; | 
|  | 130     jsEngine.evaluate("_triggerEvent('foobar')"); | 
|  | 131     assertFalse(callbackCalled); | 
|  | 132   } | 
|  | 133 } | 
| OLD | NEW | 
|---|