blob: ea18fd84ae9b4538ab47c3eaead22728051a257b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2015 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* QNX Software Systems - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.qt.pro.parser.tests;
import java.util.List;
import org.eclipse.cdt.internal.qt.ui.pro.parser.QtProjectFileParser;
import org.eclipse.cdt.internal.qt.ui.pro.parser.QtProjectVariable;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.IDocument;
import org.junit.Test;
import junit.framework.TestCase;
public class QtProjectFileParserTest extends TestCase {
@Test
public void test_AssignmentOperator_Equals() {
IDocument document = new Document("SOURCES = main.cpp"); //$NON-NLS-1$
QtProjectFileParser parser = new QtProjectFileParser(document);
List<QtProjectVariable> variables = parser.getAllVariables();
assertFalse("Unable to parse variable", variables.isEmpty()); //$NON-NLS-1$
assertEquals("Invalid assignment operator", "=", variables.get(0).getAssignmentOperator()); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test
public void test_AssignmentOperator_PlusEquals() {
IDocument document = new Document("SOURCES += main.cpp"); //$NON-NLS-1$
QtProjectFileParser parser = new QtProjectFileParser(document);
List<QtProjectVariable> variables = parser.getAllVariables();
assertFalse("Unable to parse variable", variables.isEmpty()); //$NON-NLS-1$
assertEquals("Invalid assignment operator", "+=", variables.get(0).getAssignmentOperator()); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test
public void test_AssignmentOperator_MinusEquals() {
IDocument document = new Document("SOURCES -= main.cpp"); //$NON-NLS-1$
QtProjectFileParser parser = new QtProjectFileParser(document);
List<QtProjectVariable> variables = parser.getAllVariables();
assertFalse("Unable to parse variable", variables.isEmpty()); //$NON-NLS-1$
assertEquals("Invalid assignment operator", "-=", variables.get(0).getAssignmentOperator()); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test
public void test_AssignmentOperator_AsterixEquals() {
IDocument document = new Document("SOURCES *= main.cpp"); //$NON-NLS-1$
QtProjectFileParser parser = new QtProjectFileParser(document);
List<QtProjectVariable> variables = parser.getAllVariables();
assertFalse("Unable to parse variable", variables.isEmpty()); //$NON-NLS-1$
assertEquals("Invalid assignment operator", "*=", variables.get(0).getAssignmentOperator()); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test
public void test_CommentedVariable() {
IDocument document = new Document("# SOURCES += main.cpp"); //$NON-NLS-1$
QtProjectFileParser parser = new QtProjectFileParser(document);
assertTrue("Found variable even though it was commented", parser.getAllVariables().isEmpty()); //$NON-NLS-1$
}
@Test
public void test_CommentedVariable2() {
IDocument document = new Document("SOURCES # += main.cpp"); //$NON-NLS-1$
QtProjectFileParser parser = new QtProjectFileParser(document);
assertTrue("Found variable even though it was commented", parser.getAllVariables().isEmpty()); //$NON-NLS-1$
}
@Test
public void test_MalformedVariable() {
IDocument document = new Document("MY VARIABLE # += main.cpp"); //$NON-NLS-1$
QtProjectFileParser parser = new QtProjectFileParser(document);
assertTrue("Found variable even though it was malformed", parser.getAllVariables().isEmpty()); //$NON-NLS-1$
}
@Test
public void test_MalformedVariable2() {
IDocument document = new Document("\\SOURCES # += main.cpp"); //$NON-NLS-1$
QtProjectFileParser parser = new QtProjectFileParser(document);
assertTrue("Found variable even though it was malformed", parser.getAllVariables().isEmpty()); //$NON-NLS-1$
}
@Test
public void test_FullyQualifiedName() {
IDocument document = new Document("fully.qualified.Name += main.cpp"); //$NON-NLS-1$
QtProjectFileParser parser = new QtProjectFileParser(document);
QtProjectVariable sources = parser.getVariable("fully.qualified.Name"); //$NON-NLS-1$
assertNotNull("Unable to parse variable", sources); //$NON-NLS-1$
}
@Test
public void test_SingleLineVariable() {
IDocument document = new Document("SOURCES += main.cpp"); //$NON-NLS-1$
QtProjectFileParser parser = new QtProjectFileParser(document);
QtProjectVariable sources = parser.getVariable("SOURCES"); //$NON-NLS-1$
assertNotNull("Unable to parse variable", sources); //$NON-NLS-1$
assertTrue("Unable to parse \"main.cpp\" from SOURCES variable", sources.getValueIndex("main.cpp") == 0); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test
public void test_SingleLineVariable_MultipleValues() {
IDocument document = new Document("CONFIG += qt debug"); //$NON-NLS-1$
QtProjectFileParser parser = new QtProjectFileParser(document);
QtProjectVariable sources = parser.getVariable("CONFIG"); //$NON-NLS-1$
assertNotNull("Unable to parse variable", sources); //$NON-NLS-1$
assertTrue("Unable to parse \"qt debug\" from SOURCES variable", sources.getValueIndex("qt debug") == 0); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test
public void test_VariableWithComment() {
IDocument document = new Document("SOURCES += main.cpp # this is a comment\n"); //$NON-NLS-1$
QtProjectFileParser parser = new QtProjectFileParser(document);
QtProjectVariable sources = parser.getVariable("SOURCES"); //$NON-NLS-1$
assertNotNull("Unable to parse variable", sources); //$NON-NLS-1$
assertEquals("Unable to parse assignment from SOURCES variable", "+=", sources.getAssignmentOperator()); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue("Unable to parse \"main.cpp\" from SOURCES variable", sources.getValueIndex("main.cpp") == 0); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test
public void test_MultilineVariable() {
IDocument document = new Document("SOURCES += main.cpp \\\n main2.cpp"); //$NON-NLS-1$
QtProjectFileParser parser = new QtProjectFileParser(document);
QtProjectVariable sources = parser.getVariable("SOURCES"); //$NON-NLS-1$
assertNotNull("Unable to parse variable", sources); //$NON-NLS-1$
assertEquals("Incorrect number of lines", sources.getNumberOfLines(), 2); //$NON-NLS-1$
assertTrue("Unable to parse \"main.cpp\" from SOURCES variable", sources.getValueIndex("main.cpp") == 0); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue("Unable to parse \"main2.cpp\" from SOURCES variable", sources.getValueIndex("main2.cpp") == 1); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test
public void test_MultilineVariable2() {
IDocument document = new Document("SOURCES += main.cpp \\\n main2.cpp \\\n main3.cpp"); //$NON-NLS-1$
QtProjectFileParser parser = new QtProjectFileParser(document);
QtProjectVariable sources = parser.getVariable("SOURCES"); //$NON-NLS-1$
assertNotNull("Unable to parse variable", sources); //$NON-NLS-1$
assertEquals("Incorrect number of lines", 3, sources.getNumberOfLines()); //$NON-NLS-1$
assertTrue("Unable to parse \"main.cpp\" from SOURCES variable", sources.getValueIndex("main.cpp") == 0); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue("Unable to parse \"main2.cpp\" from SOURCES variable", sources.getValueIndex("main2.cpp") == 1); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue("Unable to parse \"main3.cpp\" from SOURCES variable", sources.getValueIndex("main3.cpp") == 2); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test
public void test_MalformedMultilineVariable() {
IDocument document = new Document("SOURCES += main.cpp \\\n main2.cpp \\"); //$NON-NLS-1$
QtProjectFileParser parser = new QtProjectFileParser(document);
QtProjectVariable sources = parser.getVariable("SOURCES"); //$NON-NLS-1$
assertNotNull("Unable to parse variable", sources); //$NON-NLS-1$
assertEquals("Incorrect number of lines", 2, sources.getNumberOfLines()); //$NON-NLS-1$
assertTrue("Unable to parse \"main.cpp\" from SOURCES variable", sources.getValueIndex("main.cpp") == 0); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue("Unable to parse \"main2.cpp\" from SOURCES variable", sources.getValueIndex("main2.cpp") == 1); //$NON-NLS-1$ //$NON-NLS-2$
}
@Test
public void test_MultilineVariable_WithComment() {
IDocument document = new Document(
"SOURCES += main.cpp \\ # this is a comment \n main2.cpp # this is a comment "); //$NON-NLS-1$
QtProjectFileParser parser = new QtProjectFileParser(document);
QtProjectVariable sources = parser.getVariable("SOURCES"); //$NON-NLS-1$
assertNotNull("Unable to parse variable", sources); //$NON-NLS-1$
assertEquals("Incorrect number of lines", 2, sources.getNumberOfLines()); //$NON-NLS-1$
assertTrue("Unable to parse \"main.cpp\" from SOURCES variable", sources.getValueIndex("main.cpp") == 0); //$NON-NLS-1$ //$NON-NLS-2$
assertTrue("Unable to parse \"main2.cpp\" from SOURCES variable", sources.getValueIndex("main2.cpp") == 1); //$NON-NLS-1$ //$NON-NLS-2$
}
}