/**
* Copyright 2016-2017 Linagora, Université Joseph Fourier, Floralis
*
* The present code is developed in the scope of the joint LINAGORA -
* Université Joseph Fourier - Floralis research program and is designated
* as a "Result" pursuant to the terms and conditions of the LINAGORA
* - Université Joseph Fourier - Floralis research program. Each copyright
* holder of Results enumerated here above fully & independently holds complete
* ownership of the complete Intellectual Property rights applicable to the whole
* of said Results, and may freely exploit it in any manner which does not infringe
* the moral rights of the other copyright holders.
*
* 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 net.roboconf.core.internal.dsl.parsing;
import org.junit.Assert;
import org.junit.Test;
import net.roboconf.core.ErrorCode;
/**
* @author Vincent Zurczak - Linagora
*/
public class ExportedVariablesParserTest {
@Test
public void testParserIsResetCorrectly() {
ExportedVariablesParser parser = new ExportedVariablesParser();
Assert.assertEquals( 0, parser.errors.size());
Assert.assertEquals( 0, parser.rawNameToVariables.size());
parser.parse( "ip", null, 1 );
Assert.assertEquals( 0, parser.errors.size());
Assert.assertEquals( 1, parser.rawNameToVariables.size());
parser.parse( "", null, 1 );
Assert.assertEquals( 0, parser.errors.size());
Assert.assertEquals( 0, parser.rawNameToVariables.size());
}
@Test
public void testParser_1() {
ExportedVariablesParser parser = new ExportedVariablesParser();
parser.parse( "ip", null, 1 );
Assert.assertEquals( 0, parser.errors.size());
Assert.assertEquals( 1, parser.rawNameToVariables.size());
Assert.assertTrue( parser.rawNameToVariables.containsKey( "ip" ));
Assert.assertNull( parser.rawNameToVariables.get( "ip" ));
}
@Test
public void testParser_2() {
ExportedVariablesParser parser = new ExportedVariablesParser();
parser.parse( "ip1, ip2", null, 1 );
Assert.assertEquals( 0, parser.errors.size());
Assert.assertEquals( 2, parser.rawNameToVariables.size());
Assert.assertTrue( parser.rawNameToVariables.containsKey( "ip1" ));
Assert.assertNull( parser.rawNameToVariables.get( "ip1" ));
Assert.assertTrue( parser.rawNameToVariables.containsKey( "ip2" ));
Assert.assertNull( parser.rawNameToVariables.get( "ip2" ));
}
@Test
public void testParser_3() {
ExportedVariablesParser parser = new ExportedVariablesParser();
parser.parse( "port=8080", null, 1 );
Assert.assertEquals( 0, parser.errors.size());
Assert.assertEquals( 1, parser.rawNameToVariables.size());
Assert.assertEquals( "8080", parser.rawNameToVariables.get( "port" ));
parser = new ExportedVariablesParser();
parser.parse( "port = 8080", null, 1 );
Assert.assertEquals( 0, parser.errors.size());
Assert.assertEquals( 1, parser.rawNameToVariables.size());
Assert.assertEquals( "8080", parser.rawNameToVariables.get( "port" ));
parser = new ExportedVariablesParser();
parser.parse( " port = 8080 ", null, 1 );
Assert.assertEquals( 0, parser.errors.size());
Assert.assertEquals( 1, parser.rawNameToVariables.size());
Assert.assertEquals( "8080", parser.rawNameToVariables.get( "port" ));
}
@Test
public void testParser_4() {
ExportedVariablesParser parser = new ExportedVariablesParser();
parser.parse( "ip, port = 8080", null, 1 );
Assert.assertEquals( 0, parser.errors.size());
Assert.assertEquals( 2, parser.rawNameToVariables.size());
Assert.assertTrue( parser.rawNameToVariables.containsKey( "ip" ));
Assert.assertNull( parser.rawNameToVariables.get( "ip" ));
Assert.assertEquals( "8080", parser.rawNameToVariables.get( "port" ));
}
@Test
public void testParser_5() {
ExportedVariablesParser parser = new ExportedVariablesParser();
parser.parse( "ip, port=8080", null, 1 );
Assert.assertEquals( 0, parser.errors.size());
Assert.assertEquals( 2, parser.rawNameToVariables.size());
Assert.assertTrue( parser.rawNameToVariables.containsKey( "ip" ));
Assert.assertNull( parser.rawNameToVariables.get( "ip" ));
Assert.assertEquals( "8080", parser.rawNameToVariables.get( "port" ));
}
@Test
public void testParser_6() {
ExportedVariablesParser parser = new ExportedVariablesParser();
parser.parse( "ip , port = 8080 ", null, 1 );
Assert.assertEquals( 0, parser.errors.size());
Assert.assertEquals( 2, parser.rawNameToVariables.size());
Assert.assertTrue( parser.rawNameToVariables.containsKey( "ip" ));
Assert.assertNull( parser.rawNameToVariables.get( "ip" ));
Assert.assertEquals( "8080", parser.rawNameToVariables.get( "port" ));
}
@Test
public void testParser_7() {
ExportedVariablesParser parser = new ExportedVariablesParser();
parser.parse( " path = \"test with quotes\" ", null, 1 );
Assert.assertEquals( 0, parser.errors.size());
Assert.assertEquals( 1, parser.rawNameToVariables.size());
Assert.assertEquals( "test with quotes", parser.rawNameToVariables.get( "path" ));
}
@Test
public void testParser_8() {
ExportedVariablesParser parser = new ExportedVariablesParser();
parser.parse( "ip, port=8080, port-b = \"9000\", path = \"test with quotes\" ", null, 1 );
Assert.assertEquals( 0, parser.errors.size());
Assert.assertEquals( 4, parser.rawNameToVariables.size());
Assert.assertEquals( "test with quotes", parser.rawNameToVariables.get( "path" ));
Assert.assertTrue( parser.rawNameToVariables.containsKey( "ip" ));
Assert.assertNull( parser.rawNameToVariables.get( "ip" ));
Assert.assertEquals( "8080", parser.rawNameToVariables.get( "port" ));
Assert.assertEquals( "9000", parser.rawNameToVariables.get( "port-b" ));
}
@Test
public void testParser_9() {
ExportedVariablesParser parser = new ExportedVariablesParser();
parser.parse( "ip, random[port] port, path = \"test with quotes\" ", null, 1 );
Assert.assertEquals( 0, parser.errors.size());
Assert.assertEquals( 3, parser.rawNameToVariables.size());
Assert.assertEquals( "test with quotes", parser.rawNameToVariables.get( "path" ));
Assert.assertTrue( parser.rawNameToVariables.containsKey( "ip" ));
Assert.assertNull( parser.rawNameToVariables.get( "ip" ));
Assert.assertTrue( parser.rawNameToVariables.containsKey( "random[port] port" ));
Assert.assertNull( parser.rawNameToVariables.get( "random[port] port" ));
}
@Test
public void testParser_10() {
ExportedVariablesParser parser = new ExportedVariablesParser();
parser.parse( "ip, path1 = \"this path1, contains, commas('#') and special characters!*.\", path = \"test with ; a semicolon\" ", null, 1 );
Assert.assertEquals( 0, parser.errors.size());
Assert.assertEquals( 3, parser.rawNameToVariables.size());
Assert.assertEquals( "test with ; a semicolon", parser.rawNameToVariables.get( "path" ));
Assert.assertEquals( "this path1, contains, commas('#') and special characters!*.", parser.rawNameToVariables.get( "path1" ));
Assert.assertTrue( parser.rawNameToVariables.containsKey( "ip" ));
Assert.assertNull( parser.rawNameToVariables.get( "ip" ));
}
@Test
public void testParser_11() {
ExportedVariablesParser parser = new ExportedVariablesParser();
parser.parse( "path1 = \"value1, value2\"", null, 1 );
Assert.assertEquals( 0, parser.errors.size());
Assert.assertEquals( 1, parser.rawNameToVariables.size());
Assert.assertEquals( "value1, value2", parser.rawNameToVariables.get( "path1" ));
}
@Test
public void testParser_12() {
ExportedVariablesParser parser = new ExportedVariablesParser();
parser.parse( "ip = \"\", path1 = \"value1, value2\"", null, 1 );
Assert.assertEquals( 0, parser.errors.size());
Assert.assertEquals( 2, parser.rawNameToVariables.size());
Assert.assertEquals( "value1, value2", parser.rawNameToVariables.get( "path1" ));
Assert.assertEquals( "", parser.rawNameToVariables.get( "ip" ));
}
@Test
public void testParser_13() {
ExportedVariablesParser parser = new ExportedVariablesParser();
parser.parse( "path1 = \"value1, value2\", ip = \" \"", null, 1 );
Assert.assertEquals( 0, parser.errors.size());
Assert.assertEquals( 2, parser.rawNameToVariables.size());
Assert.assertEquals( "value1, value2", parser.rawNameToVariables.get( "path1" ));
Assert.assertEquals( " ", parser.rawNameToVariables.get( "ip" ));
}
@Test
public void testParser_14() {
ExportedVariablesParser parser = new ExportedVariablesParser();
parser.parse( "ip = ", null, 1 );
Assert.assertEquals( 0, parser.errors.size());
Assert.assertEquals( 1, parser.rawNameToVariables.size());
Assert.assertTrue( parser.rawNameToVariables.containsKey( "ip" ));
Assert.assertNull( parser.rawNameToVariables.get( "ip" ));
}
@Test
public void testParserErrors_1() {
ExportedVariablesParser parser = new ExportedVariablesParser();
parser.parse( "path1 = \"value1, value2", null, 1 );
Assert.assertEquals( 1, parser.errors.size());
Assert.assertEquals( 0, parser.rawNameToVariables.size());
Assert.assertEquals( ErrorCode.PM_INVALID_EXPORT_COMPLEX_VALUE, parser.errors.get( 0 ).getErrorCode());
Assert.assertEquals( "Variable name: path1", parser.errors.get( 0 ).getDetails());
}
@Test
public void testParserErrors_2() {
ExportedVariablesParser parser = new ExportedVariablesParser();
parser.parse( "path1 = value1, value2\"", null, 1 );
Assert.assertEquals( 0, parser.errors.size());
Assert.assertEquals( 2, parser.rawNameToVariables.size());
Assert.assertEquals( "value1", parser.rawNameToVariables.get( "path1" ));
Assert.assertTrue( parser.rawNameToVariables.containsKey( "value2\"" ));
Assert.assertNull( parser.rawNameToVariables.get( "value2\"" ));
}
@Test
public void testParserErrors_3() {
ExportedVariablesParser parser = new ExportedVariablesParser();
parser.parse( "ip, port = 8080, path1 = value1, value2\"", null, 1 );
Assert.assertEquals( 0, parser.errors.size());
Assert.assertEquals( 4, parser.rawNameToVariables.size());
Assert.assertTrue( parser.rawNameToVariables.containsKey( "ip" ));
Assert.assertNull( parser.rawNameToVariables.get( "ip" ));
Assert.assertEquals( "8080", parser.rawNameToVariables.get( "port" ));
Assert.assertEquals( "value1", parser.rawNameToVariables.get( "path1" ));
Assert.assertTrue( parser.rawNameToVariables.containsKey( "value2\"" ));
Assert.assertNull( parser.rawNameToVariables.get( "value2\"" ));
}
@Test
public void testParserErrors_4() {
ExportedVariablesParser parser = new ExportedVariablesParser();
parser.parse( "ip, port = 8080, path1 = \"value1, value2, path2 = \"value3, value 4\"", null, 1 );
Assert.assertEquals( 1, parser.errors.size());
Assert.assertEquals( 4, parser.rawNameToVariables.size());
Assert.assertEquals( ErrorCode.PM_INVALID_EXPORT_COMPLEX_VALUE, parser.errors.get( 0 ).getErrorCode());
Assert.assertEquals( "Variable name: path1", parser.errors.get( 0 ).getDetails());
Assert.assertTrue( parser.rawNameToVariables.containsKey( "ip" ));
Assert.assertNull( parser.rawNameToVariables.get( "ip" ));
Assert.assertEquals( "8080", parser.rawNameToVariables.get( "port" ));
Assert.assertTrue( parser.rawNameToVariables.containsKey( "value3" ));
Assert.assertNull( parser.rawNameToVariables.get( "value3" ));
Assert.assertTrue( parser.rawNameToVariables.containsKey( "value 4\"" ));
Assert.assertNull( parser.rawNameToVariables.get( "value 4\"" ));
}
@Test
public void testParserErrors_5() {
ExportedVariablesParser parser = new ExportedVariablesParser();
parser.parse( "ip, port = 8080, path1 = \"value1, value2, path2 = short", null, 1 );
Assert.assertEquals( 1, parser.errors.size());
Assert.assertEquals( 2, parser.rawNameToVariables.size());
Assert.assertEquals( ErrorCode.PM_INVALID_EXPORT_COMPLEX_VALUE, parser.errors.get( 0 ).getErrorCode());
Assert.assertEquals( "Variable name: path1", parser.errors.get( 0 ).getDetails());
Assert.assertTrue( parser.rawNameToVariables.containsKey( "ip" ));
Assert.assertNull( parser.rawNameToVariables.get( "ip" ));
Assert.assertEquals( "8080", parser.rawNameToVariables.get( "port" ));
}
@Test
public void testParserErrors_6() {
ExportedVariablesParser parser = new ExportedVariablesParser();
parser.parse( "path1 = \"value1, value2\", , ip = \" \"", null, 1 );
Assert.assertEquals( 1, parser.errors.size());
Assert.assertEquals( 2, parser.rawNameToVariables.size());
Assert.assertEquals( "value1, value2", parser.rawNameToVariables.get( "path1" ));
Assert.assertEquals( " ", parser.rawNameToVariables.get( "ip" ));
Assert.assertEquals( ErrorCode.PM_EMPTY_VARIABLE_NAME, parser.errors.get( 0 ).getErrorCode());
}
@Test
public void testParserErrors_7() {
ExportedVariablesParser parser = new ExportedVariablesParser();
parser.parse( "var2, var1 =value1\"", null, 1 );
Assert.assertEquals( 1, parser.errors.size());
Assert.assertEquals( ErrorCode.PM_INVALID_EXPORT_COMPLEX_VALUE, parser.errors.get( 0 ).getErrorCode());
Assert.assertEquals( 1, parser.rawNameToVariables.size());
Assert.assertTrue( parser.rawNameToVariables.containsKey( "var2" ));
Assert.assertNull( parser.rawNameToVariables.get( "var2" ));
}
}