tracesrv/tracecompiler/test/src/ParseFunctionParametersTest.java
author hgs
Fri, 08 Oct 2010 14:56:39 +0300
changeset 56 aa2539c91954
parent 41 tracefw/tracecompiler/test/src/ParseFunctionParametersTest.java@838cdffd57ce
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
41
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
hgs
parents:
diff changeset
     3
 * All rights reserved.
hgs
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
 *
hgs
parents:
diff changeset
     9
 * Initial Contributors:
hgs
parents:
diff changeset
    10
 * Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
 *
hgs
parents:
diff changeset
    12
 * Contributors:
hgs
parents:
diff changeset
    13
 *
hgs
parents:
diff changeset
    14
 * Description:
hgs
parents:
diff changeset
    15
 *
hgs
parents:
diff changeset
    16
 * JUnit tests for function parameters parsing
hgs
parents:
diff changeset
    17
 *
hgs
parents:
diff changeset
    18
 */
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
import static org.junit.Assert.assertTrue;
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
import java.util.ArrayList;
hgs
parents:
diff changeset
    23
import org.junit.Assert;
hgs
parents:
diff changeset
    24
import org.junit.Test;
hgs
parents:
diff changeset
    25
import com.nokia.tracecompiler.source.*;
hgs
parents:
diff changeset
    26
import com.nokia.tracecompiler.document.*;
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
public class ParseFunctionParametersTest {
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
	/**
hgs
parents:
diff changeset
    31
	 * SourceDocumentFactory
hgs
parents:
diff changeset
    32
	 */
hgs
parents:
diff changeset
    33
	SourceDocumentFactory iFactory = null;
hgs
parents:
diff changeset
    34
hgs
parents:
diff changeset
    35
	public static void main(String[] args) {
hgs
parents:
diff changeset
    36
		org.junit.runner.JUnitCore.main(ParseFunctionParametersTest.class
hgs
parents:
diff changeset
    37
				.getName());
hgs
parents:
diff changeset
    38
	}
hgs
parents:
diff changeset
    39
hgs
parents:
diff changeset
    40
	/**
hgs
parents:
diff changeset
    41
	 * jUnit test to test function parameter parsing
hgs
parents:
diff changeset
    42
	 */
hgs
parents:
diff changeset
    43
	@Test
hgs
parents:
diff changeset
    44
	public void testFunctionParameterParsing() {
hgs
parents:
diff changeset
    45
hgs
parents:
diff changeset
    46
		FileDocumentMonitor monitor = new FileDocumentMonitor();
hgs
parents:
diff changeset
    47
		iFactory = monitor.getFactory();
hgs
parents:
diff changeset
    48
hgs
parents:
diff changeset
    49
		ArrayList<String> expectedParameterNames = new ArrayList<String>();
hgs
parents:
diff changeset
    50
		ArrayList<String> expectedParameterTypes = new ArrayList<String>();
hgs
parents:
diff changeset
    51
		String functionHeader;
hgs
parents:
diff changeset
    52
hgs
parents:
diff changeset
    53
		// Function header 1
hgs
parents:
diff changeset
    54
hgs
parents:
diff changeset
    55
		// First expected parameter
hgs
parents:
diff changeset
    56
		expectedParameterNames.add("aLenght"); //$NON-NLS-1$
hgs
parents:
diff changeset
    57
		expectedParameterTypes.add("TUint32"); //$NON-NLS-1$
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
		// Second expected parameter
hgs
parents:
diff changeset
    60
		expectedParameterNames.add("aWidth"); //$NON-NLS-1$
hgs
parents:
diff changeset
    61
		expectedParameterTypes.add("TUint16"); //$NON-NLS-1$
hgs
parents:
diff changeset
    62
hgs
parents:
diff changeset
    63
		// Third expected parameter
hgs
parents:
diff changeset
    64
		expectedParameterNames.add("aDelay"); //$NON-NLS-1$
hgs
parents:
diff changeset
    65
		expectedParameterTypes.add("TUint32"); //$NON-NLS-1$
hgs
parents:
diff changeset
    66
hgs
parents:
diff changeset
    67
		// construct the function header
hgs
parents:
diff changeset
    68
		functionHeader = "DHelloWorld::DHelloWorld(TUint32 aLenght, TUint16 aWidth, TUint32 aDelay)\n" //$NON-NLS-1$
hgs
parents:
diff changeset
    69
				+ "{"; //$NON-NLS-1$
hgs
parents:
diff changeset
    70
hgs
parents:
diff changeset
    71
		System.out.println("Execute test to function header 1"); //$NON-NLS-1$
hgs
parents:
diff changeset
    72
		executeTest(expectedParameterNames, expectedParameterTypes,
hgs
parents:
diff changeset
    73
				functionHeader);
hgs
parents:
diff changeset
    74
hgs
parents:
diff changeset
    75
		// Function header 2
hgs
parents:
diff changeset
    76
hgs
parents:
diff changeset
    77
		// Clear expected names and types arrays
hgs
parents:
diff changeset
    78
		expectedParameterNames.clear();
hgs
parents:
diff changeset
    79
		expectedParameterTypes.clear();
hgs
parents:
diff changeset
    80
hgs
parents:
diff changeset
    81
		// construct the function header
hgs
parents:
diff changeset
    82
		functionHeader = "EXPORT_C DMessageHandler::DMessageHandler()\n" //$NON-NLS-1$
hgs
parents:
diff changeset
    83
				+ ": iWriter( NULL )\n" //$NON-NLS-1$
hgs
parents:
diff changeset
    84
				+ ", iSettings( NULL )\n" //$NON-NLS-1$				
hgs
parents:
diff changeset
    85
				+ "{"; //$NON-NLS-1$
hgs
parents:
diff changeset
    86
hgs
parents:
diff changeset
    87
		System.out.println("Execute test to function header 2"); //$NON-NLS-1$
hgs
parents:
diff changeset
    88
		executeTest(expectedParameterNames, expectedParameterTypes,
hgs
parents:
diff changeset
    89
				functionHeader);
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
		// Test headers those caused defects in TraceCompiler version 2.1.0 and
hgs
parents:
diff changeset
    92
		// 2.1.1
hgs
parents:
diff changeset
    93
		// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
hgs
parents:
diff changeset
    94
		// x
hgs
parents:
diff changeset
    95
hgs
parents:
diff changeset
    96
		System.out
hgs
parents:
diff changeset
    97
				.println("Execute tests to function headers those caused defects in TraceCompiler version 2.1.0 and 2.1.1"); //$NON-NLS-1$
hgs
parents:
diff changeset
    98
hgs
parents:
diff changeset
    99
		// Clear expected names and types arrays
hgs
parents:
diff changeset
   100
		expectedParameterNames.clear();
hgs
parents:
diff changeset
   101
		expectedParameterTypes.clear();
hgs
parents:
diff changeset
   102
hgs
parents:
diff changeset
   103
		// First expected parameter
hgs
parents:
diff changeset
   104
		expectedParameterNames.add("aObserver"); //$NON-NLS-1$
hgs
parents:
diff changeset
   105
		expectedParameterTypes.add("MModemLcsServerObserver"); //$NON-NLS-1$
hgs
parents:
diff changeset
   106
hgs
parents:
diff changeset
   107
		// Second expected parameter
hgs
parents:
diff changeset
   108
		expectedParameterNames.add("aIsiMsgObserver"); //$NON-NLS-1$
hgs
parents:
diff changeset
   109
		expectedParameterTypes.add("MModemLcsIsiMsgObserver"); //$NON-NLS-1$
hgs
parents:
diff changeset
   110
hgs
parents:
diff changeset
   111
		// construct the function header
hgs
parents:
diff changeset
   112
		functionHeader = "Cmodemlcsserverrrc::Cmodemlcsserverrrc(MModemLcsServerObserver *aObserver, MModemLcsIsiMsgObserver* aIsiMsgObserver):\n" //$NON-NLS-1$
hgs
parents:
diff changeset
   113
				+ " CActive(EPriorityStandard) // Standard priority\n" //$NON-NLS-1$
hgs
parents:
diff changeset
   114
				+ "{"; //$NON-NLS-1$
hgs
parents:
diff changeset
   115
hgs
parents:
diff changeset
   116
		executeTest(expectedParameterNames, expectedParameterTypes,
hgs
parents:
diff changeset
   117
				functionHeader);
hgs
parents:
diff changeset
   118
hgs
parents:
diff changeset
   119
		// Clear expected names and types arrays
hgs
parents:
diff changeset
   120
		expectedParameterNames.clear();
hgs
parents:
diff changeset
   121
		expectedParameterTypes.clear();
hgs
parents:
diff changeset
   122
hgs
parents:
diff changeset
   123
		// First expected parameter
hgs
parents:
diff changeset
   124
		expectedParameterNames.add("aDriver"); //$NON-NLS-1$
hgs
parents:
diff changeset
   125
		expectedParameterTypes.add("RMeDriver"); //$NON-NLS-1$
hgs
parents:
diff changeset
   126
hgs
parents:
diff changeset
   127
		// Second expected parameter
hgs
parents:
diff changeset
   128
		expectedParameterNames.add("aMaxMsgLength"); //$NON-NLS-1$
hgs
parents:
diff changeset
   129
		expectedParameterTypes.add("TUint16"); //$NON-NLS-1$
hgs
parents:
diff changeset
   130
hgs
parents:
diff changeset
   131
		// construct the function header
hgs
parents:
diff changeset
   132
		functionHeader = "CNpeSendData::CNpeSendData(RMeDriver* aDriver, TUint16 aMaxMsgLength): CActive(EPriorityStandard),\n" //$NON-NLS-1$
hgs
parents:
diff changeset
   133
				+ "iDriver(aDriver),\n" //$NON-NLS-1$
hgs
parents:
diff changeset
   134
				+ "iMaxMsgLength(aMaxMsgLength)\n" //$NON-NLS-1$
hgs
parents:
diff changeset
   135
				+ "{"; //$NON-NLS-1$
hgs
parents:
diff changeset
   136
hgs
parents:
diff changeset
   137
		executeTest(expectedParameterNames, expectedParameterTypes,
hgs
parents:
diff changeset
   138
				functionHeader);
hgs
parents:
diff changeset
   139
hgs
parents:
diff changeset
   140
		// Same expected parameter names and types are used as previous case
hgs
parents:
diff changeset
   141
hgs
parents:
diff changeset
   142
		// construct the function header
hgs
parents:
diff changeset
   143
		functionHeader = "CNpeReceiveData::CNpeReceiveData(RMeDriver* aDriver, TUint16 aMaxMsgLength): CActive(EPriorityStandard),\n" //$NON-NLS-1$
hgs
parents:
diff changeset
   144
				+ "iDriver(aDriver),\n" //$NON-NLS-1$
hgs
parents:
diff changeset
   145
				+ "iMaxMsgLength(aMaxMsgLength)\n" //$NON-NLS-1$
hgs
parents:
diff changeset
   146
				+ "{"; //$NON-NLS-1$
hgs
parents:
diff changeset
   147
hgs
parents:
diff changeset
   148
		executeTest(expectedParameterNames, expectedParameterTypes,
hgs
parents:
diff changeset
   149
				functionHeader);
hgs
parents:
diff changeset
   150
		// x
hgs
parents:
diff changeset
   151
		// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
hgs
parents:
diff changeset
   152
hgs
parents:
diff changeset
   153
	}
hgs
parents:
diff changeset
   154
hgs
parents:
diff changeset
   155
	/**
hgs
parents:
diff changeset
   156
	 * Execute test for function header
hgs
parents:
diff changeset
   157
	 * 
hgs
parents:
diff changeset
   158
	 * @param expectedParameterNames
hgs
parents:
diff changeset
   159
	 *            expected parameter names
hgs
parents:
diff changeset
   160
	 * @param expectedParameterTypes
hgs
parents:
diff changeset
   161
	 *            expected parameter types
hgs
parents:
diff changeset
   162
	 * @param functionHeader
hgs
parents:
diff changeset
   163
	 *            function header to be parsed
hgs
parents:
diff changeset
   164
	 */
hgs
parents:
diff changeset
   165
	private void executeTest(ArrayList<String> expectedParameterNames,
hgs
parents:
diff changeset
   166
			ArrayList<String> expectedParameterTypes,
hgs
parents:
diff changeset
   167
			final String functionHeader) {
hgs
parents:
diff changeset
   168
hgs
parents:
diff changeset
   169
		// first test the parser on an unwrapped string
hgs
parents:
diff changeset
   170
		SourceParser sourceParser = new SourceParser(iFactory, iFactory
hgs
parents:
diff changeset
   171
				.createDocument(functionHeader));
hgs
parents:
diff changeset
   172
hgs
parents:
diff changeset
   173
		// ArrayList<String> actualTokens = new ArrayList<String>();
hgs
parents:
diff changeset
   174
		ArrayList<SourceParameter> actualParameters = new ArrayList<SourceParameter>();
hgs
parents:
diff changeset
   175
hgs
parents:
diff changeset
   176
		// parse string
hgs
parents:
diff changeset
   177
		try {
hgs
parents:
diff changeset
   178
			sourceParser.parseFunctionParameters(0, actualParameters);
hgs
parents:
diff changeset
   179
hgs
parents:
diff changeset
   180
		} catch (SourceParserException e) {
hgs
parents:
diff changeset
   181
			Assert.fail(e.getMessage());
hgs
parents:
diff changeset
   182
		}
hgs
parents:
diff changeset
   183
hgs
parents:
diff changeset
   184
		checkContents(actualParameters, expectedParameterNames,
hgs
parents:
diff changeset
   185
				expectedParameterTypes);
hgs
parents:
diff changeset
   186
	}
hgs
parents:
diff changeset
   187
hgs
parents:
diff changeset
   188
	/**
hgs
parents:
diff changeset
   189
	 * Check contents
hgs
parents:
diff changeset
   190
	 * 
hgs
parents:
diff changeset
   191
	 * @param actualParameters
hgs
parents:
diff changeset
   192
	 *            actual parsed parameters
hgs
parents:
diff changeset
   193
	 * @param expectedParameterNames
hgs
parents:
diff changeset
   194
	 *            expected parameter names
hgs
parents:
diff changeset
   195
	 * @param expectedParameterTypes
hgs
parents:
diff changeset
   196
	 *            expected parameter types
hgs
parents:
diff changeset
   197
	 */
hgs
parents:
diff changeset
   198
	private static void checkContents(
hgs
parents:
diff changeset
   199
			final ArrayList<SourceParameter> actualParameters,
hgs
parents:
diff changeset
   200
			final ArrayList<String> expectedParameterNames,
hgs
parents:
diff changeset
   201
			final ArrayList<String> expectedParameterTypes) {
hgs
parents:
diff changeset
   202
hgs
parents:
diff changeset
   203
		// Confirm count of parsed parameters
hgs
parents:
diff changeset
   204
		
hgs
parents:
diff changeset
   205
		System.out.println("Confirm count of parsed parameters:"); //$NON-NLS-1$
hgs
parents:
diff changeset
   206
		System.out.println("actualParameters.size() = " + actualParameters.size()); //$NON-NLS-1$
hgs
parents:
diff changeset
   207
		System.out.println("expectedParameterNames() = " + expectedParameterNames.size()); //$NON-NLS-1$
hgs
parents:
diff changeset
   208
		assertTrue(actualParameters.size() == expectedParameterNames.size());
hgs
parents:
diff changeset
   209
		for (int i = 0; i < actualParameters.size(); i++) {
hgs
parents:
diff changeset
   210
hgs
parents:
diff changeset
   211
			// Confirm parsed parameter names
hgs
parents:
diff changeset
   212
			
hgs
parents:
diff changeset
   213
			System.out.println("Confirm parsed parameter names:"); //$NON-NLS-1$
hgs
parents:
diff changeset
   214
			System.out.println("actualParameters name = " + actualParameters.get(i).getName()); //$NON-NLS-1$
hgs
parents:
diff changeset
   215
			System.out.println("expectedParameter name = " + expectedParameterNames.get(i)); //$NON-NLS-1$
hgs
parents:
diff changeset
   216
			assertTrue(actualParameters.get(i).getName().compareTo(
hgs
parents:
diff changeset
   217
					expectedParameterNames.get(i)) == 0);
hgs
parents:
diff changeset
   218
hgs
parents:
diff changeset
   219
			// Confirm parsed parameter types
hgs
parents:
diff changeset
   220
			
hgs
parents:
diff changeset
   221
			System.out.println("Confirm parsed parameter types:"); //$NON-NLS-1$
hgs
parents:
diff changeset
   222
			System.out.println("actualParameters type = " + actualParameters.get(i).getType()); //$NON-NLS-1$
hgs
parents:
diff changeset
   223
			System.out.println("expectedParameter type = " + expectedParameterTypes.get(i)); //$NON-NLS-1$
hgs
parents:
diff changeset
   224
			assertTrue(actualParameters.get(i).getType().compareTo(
hgs
parents:
diff changeset
   225
					expectedParameterTypes.get(i)) == 0);
hgs
parents:
diff changeset
   226
		}
hgs
parents:
diff changeset
   227
	}
hgs
parents:
diff changeset
   228
}