tracesrv/tracecompiler/test/src/ParseFunctionParametersTest.java
changeset 56 aa2539c91954
parent 41 838cdffd57ce
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tracesrv/tracecompiler/test/src/ParseFunctionParametersTest.java	Fri Oct 08 14:56:39 2010 +0300
@@ -0,0 +1,228 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:
+ *
+ * JUnit tests for function parameters parsing
+ *
+ */
+
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import org.junit.Assert;
+import org.junit.Test;
+import com.nokia.tracecompiler.source.*;
+import com.nokia.tracecompiler.document.*;
+
+public class ParseFunctionParametersTest {
+
+	/**
+	 * SourceDocumentFactory
+	 */
+	SourceDocumentFactory iFactory = null;
+
+	public static void main(String[] args) {
+		org.junit.runner.JUnitCore.main(ParseFunctionParametersTest.class
+				.getName());
+	}
+
+	/**
+	 * jUnit test to test function parameter parsing
+	 */
+	@Test
+	public void testFunctionParameterParsing() {
+
+		FileDocumentMonitor monitor = new FileDocumentMonitor();
+		iFactory = monitor.getFactory();
+
+		ArrayList<String> expectedParameterNames = new ArrayList<String>();
+		ArrayList<String> expectedParameterTypes = new ArrayList<String>();
+		String functionHeader;
+
+		// Function header 1
+
+		// First expected parameter
+		expectedParameterNames.add("aLenght"); //$NON-NLS-1$
+		expectedParameterTypes.add("TUint32"); //$NON-NLS-1$
+
+		// Second expected parameter
+		expectedParameterNames.add("aWidth"); //$NON-NLS-1$
+		expectedParameterTypes.add("TUint16"); //$NON-NLS-1$
+
+		// Third expected parameter
+		expectedParameterNames.add("aDelay"); //$NON-NLS-1$
+		expectedParameterTypes.add("TUint32"); //$NON-NLS-1$
+
+		// construct the function header
+		functionHeader = "DHelloWorld::DHelloWorld(TUint32 aLenght, TUint16 aWidth, TUint32 aDelay)\n" //$NON-NLS-1$
+				+ "{"; //$NON-NLS-1$
+
+		System.out.println("Execute test to function header 1"); //$NON-NLS-1$
+		executeTest(expectedParameterNames, expectedParameterTypes,
+				functionHeader);
+
+		// Function header 2
+
+		// Clear expected names and types arrays
+		expectedParameterNames.clear();
+		expectedParameterTypes.clear();
+
+		// construct the function header
+		functionHeader = "EXPORT_C DMessageHandler::DMessageHandler()\n" //$NON-NLS-1$
+				+ ": iWriter( NULL )\n" //$NON-NLS-1$
+				+ ", iSettings( NULL )\n" //$NON-NLS-1$				
+				+ "{"; //$NON-NLS-1$
+
+		System.out.println("Execute test to function header 2"); //$NON-NLS-1$
+		executeTest(expectedParameterNames, expectedParameterTypes,
+				functionHeader);
+
+		// Test headers those caused defects in TraceCompiler version 2.1.0 and
+		// 2.1.1
+		// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+		// x
+
+		System.out
+				.println("Execute tests to function headers those caused defects in TraceCompiler version 2.1.0 and 2.1.1"); //$NON-NLS-1$
+
+		// Clear expected names and types arrays
+		expectedParameterNames.clear();
+		expectedParameterTypes.clear();
+
+		// First expected parameter
+		expectedParameterNames.add("aObserver"); //$NON-NLS-1$
+		expectedParameterTypes.add("MModemLcsServerObserver"); //$NON-NLS-1$
+
+		// Second expected parameter
+		expectedParameterNames.add("aIsiMsgObserver"); //$NON-NLS-1$
+		expectedParameterTypes.add("MModemLcsIsiMsgObserver"); //$NON-NLS-1$
+
+		// construct the function header
+		functionHeader = "Cmodemlcsserverrrc::Cmodemlcsserverrrc(MModemLcsServerObserver *aObserver, MModemLcsIsiMsgObserver* aIsiMsgObserver):\n" //$NON-NLS-1$
+				+ " CActive(EPriorityStandard) // Standard priority\n" //$NON-NLS-1$
+				+ "{"; //$NON-NLS-1$
+
+		executeTest(expectedParameterNames, expectedParameterTypes,
+				functionHeader);
+
+		// Clear expected names and types arrays
+		expectedParameterNames.clear();
+		expectedParameterTypes.clear();
+
+		// First expected parameter
+		expectedParameterNames.add("aDriver"); //$NON-NLS-1$
+		expectedParameterTypes.add("RMeDriver"); //$NON-NLS-1$
+
+		// Second expected parameter
+		expectedParameterNames.add("aMaxMsgLength"); //$NON-NLS-1$
+		expectedParameterTypes.add("TUint16"); //$NON-NLS-1$
+
+		// construct the function header
+		functionHeader = "CNpeSendData::CNpeSendData(RMeDriver* aDriver, TUint16 aMaxMsgLength): CActive(EPriorityStandard),\n" //$NON-NLS-1$
+				+ "iDriver(aDriver),\n" //$NON-NLS-1$
+				+ "iMaxMsgLength(aMaxMsgLength)\n" //$NON-NLS-1$
+				+ "{"; //$NON-NLS-1$
+
+		executeTest(expectedParameterNames, expectedParameterTypes,
+				functionHeader);
+
+		// Same expected parameter names and types are used as previous case
+
+		// construct the function header
+		functionHeader = "CNpeReceiveData::CNpeReceiveData(RMeDriver* aDriver, TUint16 aMaxMsgLength): CActive(EPriorityStandard),\n" //$NON-NLS-1$
+				+ "iDriver(aDriver),\n" //$NON-NLS-1$
+				+ "iMaxMsgLength(aMaxMsgLength)\n" //$NON-NLS-1$
+				+ "{"; //$NON-NLS-1$
+
+		executeTest(expectedParameterNames, expectedParameterTypes,
+				functionHeader);
+		// x
+		// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+
+	}
+
+	/**
+	 * Execute test for function header
+	 * 
+	 * @param expectedParameterNames
+	 *            expected parameter names
+	 * @param expectedParameterTypes
+	 *            expected parameter types
+	 * @param functionHeader
+	 *            function header to be parsed
+	 */
+	private void executeTest(ArrayList<String> expectedParameterNames,
+			ArrayList<String> expectedParameterTypes,
+			final String functionHeader) {
+
+		// first test the parser on an unwrapped string
+		SourceParser sourceParser = new SourceParser(iFactory, iFactory
+				.createDocument(functionHeader));
+
+		// ArrayList<String> actualTokens = new ArrayList<String>();
+		ArrayList<SourceParameter> actualParameters = new ArrayList<SourceParameter>();
+
+		// parse string
+		try {
+			sourceParser.parseFunctionParameters(0, actualParameters);
+
+		} catch (SourceParserException e) {
+			Assert.fail(e.getMessage());
+		}
+
+		checkContents(actualParameters, expectedParameterNames,
+				expectedParameterTypes);
+	}
+
+	/**
+	 * Check contents
+	 * 
+	 * @param actualParameters
+	 *            actual parsed parameters
+	 * @param expectedParameterNames
+	 *            expected parameter names
+	 * @param expectedParameterTypes
+	 *            expected parameter types
+	 */
+	private static void checkContents(
+			final ArrayList<SourceParameter> actualParameters,
+			final ArrayList<String> expectedParameterNames,
+			final ArrayList<String> expectedParameterTypes) {
+
+		// Confirm count of parsed parameters
+		
+		System.out.println("Confirm count of parsed parameters:"); //$NON-NLS-1$
+		System.out.println("actualParameters.size() = " + actualParameters.size()); //$NON-NLS-1$
+		System.out.println("expectedParameterNames() = " + expectedParameterNames.size()); //$NON-NLS-1$
+		assertTrue(actualParameters.size() == expectedParameterNames.size());
+		for (int i = 0; i < actualParameters.size(); i++) {
+
+			// Confirm parsed parameter names
+			
+			System.out.println("Confirm parsed parameter names:"); //$NON-NLS-1$
+			System.out.println("actualParameters name = " + actualParameters.get(i).getName()); //$NON-NLS-1$
+			System.out.println("expectedParameter name = " + expectedParameterNames.get(i)); //$NON-NLS-1$
+			assertTrue(actualParameters.get(i).getName().compareTo(
+					expectedParameterNames.get(i)) == 0);
+
+			// Confirm parsed parameter types
+			
+			System.out.println("Confirm parsed parameter types:"); //$NON-NLS-1$
+			System.out.println("actualParameters type = " + actualParameters.get(i).getType()); //$NON-NLS-1$
+			System.out.println("expectedParameter type = " + expectedParameterTypes.get(i)); //$NON-NLS-1$
+			assertTrue(actualParameters.get(i).getType().compareTo(
+					expectedParameterTypes.get(i)) == 0);
+		}
+	}
+}