/* * Copyright 2007-2015 University Of Southern California * * Licensed 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. */ package edu.isi.pegasus.planner.code.generator.condor; import edu.isi.pegasus.planner.namespace.ENV; import java.util.LinkedHashMap; import java.util.Map; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.*; /** * To test the Condor Environment Escaping logic implemented in Pegasus. * * @author Karan Vahi */ public class CondorEnvironmentEscapeTest { private CondorEnvironmentEscape mEscape = null; public CondorEnvironmentEscapeTest() { } @Before public void setUp() { mEscape = new CondorEnvironmentEscape(); } /** * Enclose the whole thing with quotes. */ @Test public void testBasic() { Map<String,String> m = new LinkedHashMap(); m.put( "one", "1" ); m.put( "two", "2"); m.put( "three", "3"); ENV env = new ENV( m ); String expected = "\"one=1 two=2 three=3 \""; String result = mEscape.escape(env); assertEquals( expected, result ) ; } @Test public void testSpaceInValue(){ String value = "Escaped Value"; String expected = "'Escaped Value'"; String result = mEscape.escape(value); assertEquals( expected, result ) ; } @Test public void testSingleQuoteInValue(){ String value = "'SingleQuoted'"; String expected = "''SingleQuoted''"; String result = mEscape.escape(value); assertEquals( expected, result ) ; } @Test public void testDoubleQuoteInValue(){ String value = "\"DoubleQuoted\""; String expected = "\"\"DoubleQuoted\"\"";; String result = mEscape.escape(value); assertEquals( expected, result ) ; } @Test public void testDoubleQuoteWithSpaceInValue(){ String value = "\"Double Quoted\""; String expected = "'\"\"Double Quoted\"\"'";; String result = mEscape.escape(value); assertEquals( expected, result ) ; } /** * Test the case described here * * http://research.cs.wisc.edu/htcondor/manual/v8.2/condor_submit.html */ @Test public void testCondorExampleInDocumentation() { Map<String,String> m = new LinkedHashMap(); m.put( "one", "1" ); m.put( "two", "\"2\""); m.put( "three", "spacey 'quoted' value"); ENV env = new ENV( m ); //should print out "one=1 two=""2"" three='spacey ''quoted'' value' " String expected = "\"one=1 two=\"\"2\"\" three='spacey ''quoted'' value' \""; String result = mEscape.escape(env); assertEquals( expected, result ) ; } }