tracesrv/tracecompiler/test/src/PluginTracePropertyVerifierTest.java
author hgs
Fri, 08 Oct 2010 14:56:39 +0300
changeset 56 aa2539c91954
parent 41 tracefw/tracecompiler/test/src/PluginTracePropertyVerifierTest.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-2010 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 PluginTracePropertyVerifier
hgs
parents:
diff changeset
    17
 *
hgs
parents:
diff changeset
    18
 */
hgs
parents:
diff changeset
    19
import java.lang.reflect.InvocationTargetException;
hgs
parents:
diff changeset
    20
import java.lang.reflect.Method;
hgs
parents:
diff changeset
    21
import java.util.ArrayList;
hgs
parents:
diff changeset
    22
import java.util.List;
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
import junit.framework.Assert;
hgs
parents:
diff changeset
    25
import junit.framework.TestCase;
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
import org.junit.After;
hgs
parents:
diff changeset
    28
import org.junit.AfterClass;
hgs
parents:
diff changeset
    29
import org.junit.Before;
hgs
parents:
diff changeset
    30
import org.junit.BeforeClass;
hgs
parents:
diff changeset
    31
import org.junit.Test;
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
public class PluginTracePropertyVerifierTest extends TestCase {
hgs
parents:
diff changeset
    34
hgs
parents:
diff changeset
    35
	/**
hgs
parents:
diff changeset
    36
	 * Class to PluginTracePropertyVerifier
hgs
parents:
diff changeset
    37
	 */
hgs
parents:
diff changeset
    38
	static Class<?> pluginTracePropertyVerifier;
hgs
parents:
diff changeset
    39
hgs
parents:
diff changeset
    40
	/**
hgs
parents:
diff changeset
    41
	 * PluginTracePropertyVerifier object
hgs
parents:
diff changeset
    42
	 */
hgs
parents:
diff changeset
    43
	static Object ptpvObject;
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
	/**
hgs
parents:
diff changeset
    46
	 * Empty string
hgs
parents:
diff changeset
    47
	 */
hgs
parents:
diff changeset
    48
	private static final String EMPTY_STRING = ""; //$NON-NLS-1$
hgs
parents:
diff changeset
    49
hgs
parents:
diff changeset
    50
	/**
hgs
parents:
diff changeset
    51
	 * White space
hgs
parents:
diff changeset
    52
	 */
hgs
parents:
diff changeset
    53
	private static final String WHITE_SPACE = " "; //$NON-NLS-1$
hgs
parents:
diff changeset
    54
hgs
parents:
diff changeset
    55
	/**
hgs
parents:
diff changeset
    56
	 * Enum for different functions to test
hgs
parents:
diff changeset
    57
	 * 
hgs
parents:
diff changeset
    58
	 */
hgs
parents:
diff changeset
    59
	private enum FunctionToTest {
hgs
parents:
diff changeset
    60
		ISVALIDDATA
hgs
parents:
diff changeset
    61
	}
hgs
parents:
diff changeset
    62
hgs
parents:
diff changeset
    63
	/**
hgs
parents:
diff changeset
    64
	 * TestData class
hgs
parents:
diff changeset
    65
	 * 
hgs
parents:
diff changeset
    66
	 */
hgs
parents:
diff changeset
    67
	private class TestData {
hgs
parents:
diff changeset
    68
		String testString;
hgs
parents:
diff changeset
    69
		boolean expectedIsValidDataResult;
hgs
parents:
diff changeset
    70
hgs
parents:
diff changeset
    71
		/**
hgs
parents:
diff changeset
    72
		 * 
hgs
parents:
diff changeset
    73
		 * Constructor
hgs
parents:
diff changeset
    74
		 * 
hgs
parents:
diff changeset
    75
		 * @param testStringParam
hgs
parents:
diff changeset
    76
		 *            the test string
hgs
parents:
diff changeset
    77
		 * @param expectedIsValidDataResultParam
hgs
parents:
diff changeset
    78
		 *            the expected return value in case of isValidData
hgs
parents:
diff changeset
    79
		 *            method
hgs
parents:
diff changeset
    80
		 */
hgs
parents:
diff changeset
    81
		TestData(String testStringParam, boolean expectedIsValidDataResultParam) {
hgs
parents:
diff changeset
    82
			this.testString = testStringParam;
hgs
parents:
diff changeset
    83
			this.expectedIsValidDataResult = expectedIsValidDataResultParam;
hgs
parents:
diff changeset
    84
		}
hgs
parents:
diff changeset
    85
	}
hgs
parents:
diff changeset
    86
hgs
parents:
diff changeset
    87
	/**
hgs
parents:
diff changeset
    88
	 * List of test data
hgs
parents:
diff changeset
    89
	 */
hgs
parents:
diff changeset
    90
	List<TestData> testDataList = new ArrayList<TestData>();
hgs
parents:
diff changeset
    91
hgs
parents:
diff changeset
    92
	/**
hgs
parents:
diff changeset
    93
	 * main
hgs
parents:
diff changeset
    94
	 * 
hgs
parents:
diff changeset
    95
	 * @param args
hgs
parents:
diff changeset
    96
	 */
hgs
parents:
diff changeset
    97
	public static void main(String[] args) {
hgs
parents:
diff changeset
    98
		org.junit.runner.JUnitCore
hgs
parents:
diff changeset
    99
				.main(PluginTracePropertyVerifierTest.class.getName());
hgs
parents:
diff changeset
   100
	}
hgs
parents:
diff changeset
   101
hgs
parents:
diff changeset
   102
	/**
hgs
parents:
diff changeset
   103
	 * setUp
hgs
parents:
diff changeset
   104
	 */
hgs
parents:
diff changeset
   105
	@Before
hgs
parents:
diff changeset
   106
	public void setUp() {
hgs
parents:
diff changeset
   107
hgs
parents:
diff changeset
   108
		if (testDataList.size() == 0) {
hgs
parents:
diff changeset
   109
			initializeTestDataList();
hgs
parents:
diff changeset
   110
		}
hgs
parents:
diff changeset
   111
hgs
parents:
diff changeset
   112
		if (pluginTracePropertyVerifier == null && ptpvObject == null) {
hgs
parents:
diff changeset
   113
			try {
hgs
parents:
diff changeset
   114
				pluginTracePropertyVerifier = Class
hgs
parents:
diff changeset
   115
						.forName("com.nokia.tracecompiler.engine.plugin.PluginTracePropertyVerifier"); //$NON-NLS-1$
hgs
parents:
diff changeset
   116
				ptpvObject = pluginTracePropertyVerifier.newInstance();
hgs
parents:
diff changeset
   117
			} catch (Exception e) {
hgs
parents:
diff changeset
   118
				Assert.fail(e.toString());
hgs
parents:
diff changeset
   119
			}
hgs
parents:
diff changeset
   120
		}
hgs
parents:
diff changeset
   121
hgs
parents:
diff changeset
   122
	}
hgs
parents:
diff changeset
   123
hgs
parents:
diff changeset
   124
	/**
hgs
parents:
diff changeset
   125
	 * Initialize test data list
hgs
parents:
diff changeset
   126
	 */
hgs
parents:
diff changeset
   127
	private void initializeTestDataList() {
hgs
parents:
diff changeset
   128
		char VTAB = 0xB; //vertical TAB
hgs
parents:
diff changeset
   129
		testDataList.add(new TestData("Some valid text", true)); //valid text //$NON-NLS-1$
hgs
parents:
diff changeset
   130
		testDataList.add(new TestData("Some text with non-valid character - vertical TAB - : " + String.valueOf(VTAB) , false)); //$NON-NLS-1$
hgs
parents:
diff changeset
   131
		testDataList.add(new TestData("Some valid text with TAB	: " , true)); //$NON-NLS-1$
hgs
parents:
diff changeset
   132
		testDataList.add(new TestData("Some valid text with TABs				: " , true)); //$NON-NLS-1$
hgs
parents:
diff changeset
   133
	}
hgs
parents:
diff changeset
   134
hgs
parents:
diff changeset
   135
	/**
hgs
parents:
diff changeset
   136
	 * Execute tests
hgs
parents:
diff changeset
   137
	 * 
hgs
parents:
diff changeset
   138
	 * @param nameOfFunctionUnderTest
hgs
parents:
diff changeset
   139
	 *            the name of the function that should be tested
hgs
parents:
diff changeset
   140
	 * @param testType
hgs
parents:
diff changeset
   141
	 *            the number of expected result column
hgs
parents:
diff changeset
   142
	 */
hgs
parents:
diff changeset
   143
	private void executeTests(String nameOfFunctionUnderTest,
hgs
parents:
diff changeset
   144
			FunctionToTest testType) {
hgs
parents:
diff changeset
   145
		for (int i = 0; i < testDataList.size(); i++) {
hgs
parents:
diff changeset
   146
			String testString = testDataList.get(i).testString;
hgs
parents:
diff changeset
   147
			boolean expectedResult = false;
hgs
parents:
diff changeset
   148
hgs
parents:
diff changeset
   149
			switch (testType) {
hgs
parents:
diff changeset
   150
			case ISVALIDDATA:
hgs
parents:
diff changeset
   151
				expectedResult = testDataList.get(i).expectedIsValidDataResult;
hgs
parents:
diff changeset
   152
				break;
hgs
parents:
diff changeset
   153
			}
hgs
parents:
diff changeset
   154
hgs
parents:
diff changeset
   155
			executeTest(nameOfFunctionUnderTest, testString, expectedResult);
hgs
parents:
diff changeset
   156
		}
hgs
parents:
diff changeset
   157
	}
hgs
parents:
diff changeset
   158
hgs
parents:
diff changeset
   159
	/**
hgs
parents:
diff changeset
   160
	 * Execute test
hgs
parents:
diff changeset
   161
	 * 
hgs
parents:
diff changeset
   162
	 * @param nameOfFunctionUnderTest
hgs
parents:
diff changeset
   163
	 *            the name of the function that should be tested
hgs
parents:
diff changeset
   164
	 * @param testString
hgs
parents:
diff changeset
   165
	 *            the test string that is used in test
hgs
parents:
diff changeset
   166
	 * @param columNumberOfExpectedResult
hgs
parents:
diff changeset
   167
	 *            the number of expected result column
hgs
parents:
diff changeset
   168
	 */
hgs
parents:
diff changeset
   169
	private void executeTest(String nameOfFunctionUnderTest, String testString,
hgs
parents:
diff changeset
   170
			boolean expectedResult) {
hgs
parents:
diff changeset
   171
		Method functionUnderTest = null;
hgs
parents:
diff changeset
   172
		try {
hgs
parents:
diff changeset
   173
			functionUnderTest = pluginTracePropertyVerifier.getDeclaredMethod(
hgs
parents:
diff changeset
   174
					nameOfFunctionUnderTest, String.class);
hgs
parents:
diff changeset
   175
			// change access of the function under test because otherwise we can
hgs
parents:
diff changeset
   176
			// test to private functions
hgs
parents:
diff changeset
   177
			functionUnderTest.setAccessible(true);
hgs
parents:
diff changeset
   178
			// invoke the function and get result
hgs
parents:
diff changeset
   179
			Object retObj = null;
hgs
parents:
diff changeset
   180
hgs
parents:
diff changeset
   181
			// remove white spaces from test string, because those those does
hgs
parents:
diff changeset
   182
			// not exist in real life either
hgs
parents:
diff changeset
   183
			retObj = functionUnderTest.invoke(ptpvObject, testString.replace(
hgs
parents:
diff changeset
   184
					WHITE_SPACE, EMPTY_STRING));
hgs
parents:
diff changeset
   185
hgs
parents:
diff changeset
   186
			// cast the result to the expected return type.
hgs
parents:
diff changeset
   187
			Boolean res = (Boolean) retObj;
hgs
parents:
diff changeset
   188
hgs
parents:
diff changeset
   189
			String msg = functionUnderTest.getName() + "  invoked on \"" //$NON-NLS-1$
hgs
parents:
diff changeset
   190
					+ testString + "\" returned " + res.toString(); //$NON-NLS-1$
hgs
parents:
diff changeset
   191
			Assert.assertEquals(msg, expectedResult, res.booleanValue());
hgs
parents:
diff changeset
   192
		} catch (Exception e) {
hgs
parents:
diff changeset
   193
			Assert.fail(e.getMessage());
hgs
parents:
diff changeset
   194
		}
hgs
parents:
diff changeset
   195
	}
hgs
parents:
diff changeset
   196
hgs
parents:
diff changeset
   197
	/**
hgs
parents:
diff changeset
   198
	 * Test isValidData method
hgs
parents:
diff changeset
   199
	 */
hgs
parents:
diff changeset
   200
	@Test
hgs
parents:
diff changeset
   201
	public void testIsValidDataMethod() {
hgs
parents:
diff changeset
   202
		executeTests("isValidData", FunctionToTest.ISVALIDDATA); //$NON-NLS-1$
hgs
parents:
diff changeset
   203
	}
hgs
parents:
diff changeset
   204
hgs
parents:
diff changeset
   205
	//add future methods tests after this point.
hgs
parents:
diff changeset
   206
	
hgs
parents:
diff changeset
   207
	/**
hgs
parents:
diff changeset
   208
	 * tearDown
hgs
parents:
diff changeset
   209
	 */
hgs
parents:
diff changeset
   210
	@After
hgs
parents:
diff changeset
   211
	public void tearDown() {
hgs
parents:
diff changeset
   212
		// nothing to do
hgs
parents:
diff changeset
   213
	}
hgs
parents:
diff changeset
   214
hgs
parents:
diff changeset
   215
}