aboutsummaryrefslogtreecommitdiff
path: root/velocity-engine-scripting/src/test/java/org/apache/velocity/script/test/VelocityScriptContextTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'velocity-engine-scripting/src/test/java/org/apache/velocity/script/test/VelocityScriptContextTest.java')
-rw-r--r--velocity-engine-scripting/src/test/java/org/apache/velocity/script/test/VelocityScriptContextTest.java159
1 files changed, 159 insertions, 0 deletions
diff --git a/velocity-engine-scripting/src/test/java/org/apache/velocity/script/test/VelocityScriptContextTest.java b/velocity-engine-scripting/src/test/java/org/apache/velocity/script/test/VelocityScriptContextTest.java
new file mode 100644
index 00000000..8031cd0e
--- /dev/null
+++ b/velocity-engine-scripting/src/test/java/org/apache/velocity/script/test/VelocityScriptContextTest.java
@@ -0,0 +1,159 @@
+package org.apache.velocity.script.test;
+
+/*
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+
+import javax.script.Bindings;
+import javax.script.ScriptContext;
+import javax.script.SimpleBindings;
+import java.util.List;
+
+
+public class VelocityScriptContextTest extends AbstractScriptTest {
+
+ @Override
+ public void setUp() {
+ super.setUp();
+ super.setupWithDefaultFactory();
+ }
+
+ public void testInitialScopes() {
+ List<Integer> defaultScopes = engine.getContext().getScopes();
+ assertEquals(defaultScopes.size(), 2);
+ assertTrue(defaultScopes.contains(ScriptContext.ENGINE_SCOPE));
+ assertTrue(defaultScopes.contains(ScriptContext.GLOBAL_SCOPE));
+ }
+
+ public void testScopes() {
+
+ Bindings velocityBindings = new SimpleBindings();
+ engine.getContext().setBindings(velocityBindings, ScriptContext.ENGINE_SCOPE);
+ assertNotNull(engine.getBindings(ScriptContext.ENGINE_SCOPE));
+ assertNotNull("Engines Registered through manager sets the global scope", engine.getBindings(ScriptContext.GLOBAL_SCOPE));
+ }
+
+ public void testEngineScopeAttributes() {
+
+ ScriptContext context = engine.getContext();
+ context.setAttribute("engine-prop1", "engine-value1", ScriptContext.ENGINE_SCOPE);
+
+ assertEquals(context.getAttribute("engine-prop1", ScriptContext.ENGINE_SCOPE), "engine-value1");
+ assertNull(context.getAttribute("engine-prop1", ScriptContext.GLOBAL_SCOPE));
+
+ context.removeAttribute("engine-prop1", ScriptContext.ENGINE_SCOPE);
+ assertNull(context.getAttribute("engine-prop1", ScriptContext.ENGINE_SCOPE));
+
+
+ }
+
+ public void testGlobalScopeAttributes() {
+
+ ScriptContext context = engine.getContext();
+ context.setAttribute("global-prop1", "global-value1", ScriptContext.GLOBAL_SCOPE);
+
+ assertEquals(context.getAttribute("global-prop1", ScriptContext.GLOBAL_SCOPE), "global-value1");
+ assertNull(context.getAttribute("global-prop1", ScriptContext.ENGINE_SCOPE));
+
+ context.removeAttribute("global-prop1", ScriptContext.GLOBAL_SCOPE);
+ assertNull(context.getAttribute("global-prop1", ScriptContext.GLOBAL_SCOPE));
+
+ }
+
+ public void testJSRExceptions() {
+
+ ScriptContext context = engine.getContext();
+ context.setAttribute("global-prop", "global-value", ScriptContext.GLOBAL_SCOPE);
+ int invalidScope = 99;
+
+ try {
+ context.setBindings(null, ScriptContext.ENGINE_SCOPE);
+ fail("Cannot pass null binding for engine scope");
+ } catch (NullPointerException n) {
+ //Success
+ }
+
+ try {
+ context.setBindings(new SimpleBindings(), invalidScope);
+ fail("Cannot pass invalid scope");
+ } catch (IllegalArgumentException n) {
+ //Success
+ }
+ try {
+ context.getBindings(invalidScope);
+ fail("Cannot pass invalid scope");
+ } catch (IllegalArgumentException n) {
+ //Success
+ }
+
+
+ try {
+ context.setAttribute(null, "value", ScriptContext.ENGINE_SCOPE);
+
+ fail("Name cannot be null");
+ } catch (NullPointerException n) {
+ //Success
+ }
+ try {
+ context.setAttribute("name1", "value", invalidScope);
+
+ fail("Cannot pass invalid scope");
+ } catch (IllegalArgumentException n) {
+ //Success
+ }
+
+
+
+ try {
+ context.getAttribute(null, ScriptContext.ENGINE_SCOPE);
+
+ fail("Name cannot be null");
+ } catch (NullPointerException n) {
+ //Success
+ }
+ try {
+ context.getAttribute("name1", invalidScope);
+
+ fail("Cannot pass invalid scope");
+ } catch (IllegalArgumentException n) {
+ //Success
+ }
+
+
+ try {
+ context.removeAttribute(null, ScriptContext.ENGINE_SCOPE);
+
+ fail("Name cannot be null");
+ } catch (NullPointerException n) {
+ //Success
+ }
+ try {
+ context.removeAttribute("name1", invalidScope);
+
+ fail("Cannot pass invalid scope");
+ } catch (IllegalArgumentException n) {
+ //Success
+ }
+
+
+ context.setAttribute("prop2","engine-value2",ScriptContext.ENGINE_SCOPE);
+ context.setAttribute("prop2","global-value2",ScriptContext.GLOBAL_SCOPE);
+ assertEquals("Should return lowest scope value binded value",context.getAttribute("prop2"),"engine-value2");
+
+ }
+}