tracesrv/tracecompiler/test/src/MacroWrappersTest.java
author hgs
Fri, 08 Oct 2010 14:56:39 +0300
changeset 56 aa2539c91954
parent 41 tracefw/tracecompiler/test/src/MacroWrappersTest.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 OST MacroWrappers
hgs
parents:
diff changeset
    17
*
hgs
parents:
diff changeset
    18
*/
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
import static org.junit.Assert.assertTrue;
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
import java.util.ArrayList;
hgs
parents:
diff changeset
    24
import org.junit.Assert;
hgs
parents:
diff changeset
    25
import org.junit.Test;
hgs
parents:
diff changeset
    26
import com.nokia.tracecompiler.source.*;
hgs
parents:
diff changeset
    27
import com.nokia.tracecompiler.document.*;
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
public class MacroWrappersTest {
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
	public static void main(String[] args) {
hgs
parents:
diff changeset
    32
		org.junit.runner.JUnitCore.main(MacroWrappersTest.class.getName());
hgs
parents:
diff changeset
    33
	}
hgs
parents:
diff changeset
    34
	
hgs
parents:
diff changeset
    35
	@Test
hgs
parents:
diff changeset
    36
	public void testMacroWrappers(){
hgs
parents:
diff changeset
    37
		
hgs
parents:
diff changeset
    38
		// this string should parse down to the following members in list	
hgs
parents:
diff changeset
    39
		final String REFERENCE_STR = 
hgs
parents:
diff changeset
    40
			"TRACE_DEBUG_ONLY ( mystuff,…, OstTraceExt3( TRACE_DEBUG,DUP7__CONSTRUCTL,\"::ConstructL;x=%d;y=%d;z=%d\",x,y,z ) );";
hgs
parents:
diff changeset
    41
		FileDocumentMonitor monitor = new FileDocumentMonitor();		
hgs
parents:
diff changeset
    42
		SourceDocumentFactory factory = monitor.getFactory();
hgs
parents:
diff changeset
    43
hgs
parents:
diff changeset
    44
		// construct the reference parameter array
hgs
parents:
diff changeset
    45
		ArrayList<String> expectedTokens = new ArrayList<String>();
hgs
parents:
diff changeset
    46
		expectedTokens.add("TRACE_DEBUG");
hgs
parents:
diff changeset
    47
		expectedTokens.add("DUP7__CONSTRUCTL");
hgs
parents:
diff changeset
    48
		expectedTokens.add("\"::ConstructL;x=%d;y=%d;z=%d\"");
hgs
parents:
diff changeset
    49
		expectedTokens.add("x");
hgs
parents:
diff changeset
    50
		expectedTokens.add("y");
hgs
parents:
diff changeset
    51
		expectedTokens.add("z");
hgs
parents:
diff changeset
    52
hgs
parents:
diff changeset
    53
		// construct the trace string from reference parameters
hgs
parents:
diff changeset
    54
		final String TRACE_STR = "OstTraceExt3( "+ expectedTokens.get(0) + 
hgs
parents:
diff changeset
    55
								 "," + expectedTokens.get(1) + 
hgs
parents:
diff changeset
    56
								 "," + expectedTokens.get(2) +
hgs
parents:
diff changeset
    57
								 "," + expectedTokens.get(3) + 
hgs
parents:
diff changeset
    58
								 "," + expectedTokens.get(4) +
hgs
parents:
diff changeset
    59
								 "," + expectedTokens.get(5) + " )";
hgs
parents:
diff changeset
    60
				
hgs
parents:
diff changeset
    61
		// first test the parser on an unwrapped string
hgs
parents:
diff changeset
    62
		SourceParser sourceParser = new SourceParser(factory, factory.createDocument(TRACE_STR));
hgs
parents:
diff changeset
    63
		ArrayList<String> actualTokens = new ArrayList<String>();
hgs
parents:
diff changeset
    64
		// parse string
hgs
parents:
diff changeset
    65
		try{
hgs
parents:
diff changeset
    66
			sourceParser.tokenizeParameters(0, actualTokens, true);			
hgs
parents:
diff changeset
    67
		}catch(SourceParserException e){
hgs
parents:
diff changeset
    68
			Assert.fail(e.getMessage());
hgs
parents:
diff changeset
    69
		}
hgs
parents:
diff changeset
    70
						
hgs
parents:
diff changeset
    71
		checkContents(actualTokens, expectedTokens); 
hgs
parents:
diff changeset
    72
						
hgs
parents:
diff changeset
    73
		// Create the wrapped OstTrace...  	
hgs
parents:
diff changeset
    74
		final String WRAPPED_STR = "TRACE_DEBUG_ONLY ( mystuff,…, " + TRACE_STR + " );";
hgs
parents:
diff changeset
    75
		
hgs
parents:
diff changeset
    76
		// do a quick check to see that the reference string matches the string generated from list
hgs
parents:
diff changeset
    77
		// we could use java.util.StringTokenizer to generate the expected list, 
hgs
parents:
diff changeset
    78
		// but this is test code for tracecompiler after all
hgs
parents:
diff changeset
    79
		assertTrue(REFERENCE_STR.compareTo(WRAPPED_STR) == 0 );
hgs
parents:
diff changeset
    80
hgs
parents:
diff changeset
    81
		sourceParser = new SourceParser(factory, factory.createDocument(WRAPPED_STR));
hgs
parents:
diff changeset
    82
		
hgs
parents:
diff changeset
    83
hgs
parents:
diff changeset
    84
		actualTokens.clear();
hgs
parents:
diff changeset
    85
		// this string should parse down to the following members in list
hgs
parents:
diff changeset
    86
		// [0]	"mystuff"	
hgs
parents:
diff changeset
    87
		// [1]	"…"	
hgs
parents:
diff changeset
    88
		// [2]	"OstTraceExt3( TRACE_DEBUG, DUP7__CONSTRUCTL, "::ConstructL;x=%d;y=%d;z=%d",x,y,z )"	
hgs
parents:
diff changeset
    89
		try{
hgs
parents:
diff changeset
    90
			sourceParser.tokenizeParameters(0, actualTokens, true);			
hgs
parents:
diff changeset
    91
		}catch(SourceParserException e){
hgs
parents:
diff changeset
    92
			Assert.fail(e.getMessage());
hgs
parents:
diff changeset
    93
		}
hgs
parents:
diff changeset
    94
hgs
parents:
diff changeset
    95
		assertTrue(actualTokens.size() == 3);
hgs
parents:
diff changeset
    96
		assertTrue(((String)actualTokens.get(0)).compareTo("mystuff") == 0);
hgs
parents:
diff changeset
    97
		assertTrue(((String)actualTokens.get(1)).compareTo("…") == 0);
hgs
parents:
diff changeset
    98
		
hgs
parents:
diff changeset
    99
		// now check the extracted OstTrace part
hgs
parents:
diff changeset
   100
		String ostStr = (String)actualTokens.get(2);
hgs
parents:
diff changeset
   101
		assertTrue(ostStr.compareTo(TRACE_STR) == 0);
hgs
parents:
diff changeset
   102
		
hgs
parents:
diff changeset
   103
		sourceParser = new SourceParser(factory, factory.createDocument(ostStr));
hgs
parents:
diff changeset
   104
		actualTokens.clear();
hgs
parents:
diff changeset
   105
hgs
parents:
diff changeset
   106
		try{
hgs
parents:
diff changeset
   107
			sourceParser.tokenizeParameters(0, actualTokens, true);			
hgs
parents:
diff changeset
   108
		}catch(SourceParserException e){
hgs
parents:
diff changeset
   109
			Assert.fail(e.getMessage());
hgs
parents:
diff changeset
   110
		}
hgs
parents:
diff changeset
   111
						
hgs
parents:
diff changeset
   112
		checkContents(actualTokens, expectedTokens); 
hgs
parents:
diff changeset
   113
	}
hgs
parents:
diff changeset
   114
	
hgs
parents:
diff changeset
   115
	
hgs
parents:
diff changeset
   116
	@Test
hgs
parents:
diff changeset
   117
	public void testMultipleMacroWrappers(){
hgs
parents:
diff changeset
   118
		
hgs
parents:
diff changeset
   119
		// testing parsing of macro in this format
hgs
parents:
diff changeset
   120
		//TRACE_DEBUG_ONLY (OstTrace0( TRACE_DETAILED, DUP5__CONSTRUCTL, "::ConstructL" )
hgs
parents:
diff changeset
   121
		// , OstTraceExt3( TRACE_BORDER, DUP99__CONSTRUCTL, "::ConstructL;x=%x;y=%x;z=%x",x,y, (x+y) ));
hgs
parents:
diff changeset
   122
		
hgs
parents:
diff changeset
   123
		final String REFERENCE_STR = 
hgs
parents:
diff changeset
   124
			"TRACE_DEBUG_ONLY (OstTrace0( TRACE_DETAILED,DUP5__CONSTRUCTL ),OstTraceExt3( TRACE_BORDER,DUP99__CONSTRUCTL,\"::ConstructL;x=%x;y=%x;z=%x\",x,y,(x+y) ));";
hgs
parents:
diff changeset
   125
hgs
parents:
diff changeset
   126
		FileDocumentMonitor monitor = new FileDocumentMonitor();		
hgs
parents:
diff changeset
   127
		SourceDocumentFactory factory = monitor.getFactory();
hgs
parents:
diff changeset
   128
hgs
parents:
diff changeset
   129
		
hgs
parents:
diff changeset
   130
		// construct the reference parameter array
hgs
parents:
diff changeset
   131
		ArrayList<String> expectedTokens1 = new ArrayList<String>();
hgs
parents:
diff changeset
   132
		expectedTokens1.add("TRACE_DETAILED");
hgs
parents:
diff changeset
   133
		expectedTokens1.add("DUP5__CONSTRUCTL");
hgs
parents:
diff changeset
   134
		
hgs
parents:
diff changeset
   135
		
hgs
parents:
diff changeset
   136
		ArrayList<String> expectedTokens2 = new ArrayList<String>();
hgs
parents:
diff changeset
   137
		expectedTokens2.add("TRACE_BORDER");
hgs
parents:
diff changeset
   138
		expectedTokens2.add("DUP99__CONSTRUCTL");
hgs
parents:
diff changeset
   139
		expectedTokens2.add("\"::ConstructL;x=%x;y=%x;z=%x\"");
hgs
parents:
diff changeset
   140
		expectedTokens2.add("x");
hgs
parents:
diff changeset
   141
		expectedTokens2.add("y");
hgs
parents:
diff changeset
   142
		expectedTokens2.add("(x+y)");
hgs
parents:
diff changeset
   143
hgs
parents:
diff changeset
   144
		// construct the trace strings from reference parameters
hgs
parents:
diff changeset
   145
		final String TRACE_STR1 = "OstTrace0( "+ expectedTokens1.get(0) + 
hgs
parents:
diff changeset
   146
								 "," + expectedTokens1.get(1) + " )";
hgs
parents:
diff changeset
   147
hgs
parents:
diff changeset
   148
		final String TRACE_STR2 = "OstTraceExt3( "+ expectedTokens2.get(0) + 
hgs
parents:
diff changeset
   149
								  "," + expectedTokens2.get(1) + 
hgs
parents:
diff changeset
   150
								  "," + expectedTokens2.get(2) +
hgs
parents:
diff changeset
   151
								  "," + expectedTokens2.get(3) + 
hgs
parents:
diff changeset
   152
								  "," + expectedTokens2.get(4) +
hgs
parents:
diff changeset
   153
								  "," + expectedTokens2.get(5) + " )";
hgs
parents:
diff changeset
   154
hgs
parents:
diff changeset
   155
		// check it works with TRACE_STR1
hgs
parents:
diff changeset
   156
		SourceParser sourceParser = new SourceParser(factory, factory.createDocument(TRACE_STR1));
hgs
parents:
diff changeset
   157
		ArrayList<String> actualTokens = new ArrayList<String>();
hgs
parents:
diff changeset
   158
		// parse string
hgs
parents:
diff changeset
   159
		try{
hgs
parents:
diff changeset
   160
			sourceParser.tokenizeParameters(0, actualTokens, true);			
hgs
parents:
diff changeset
   161
		}catch(SourceParserException e){
hgs
parents:
diff changeset
   162
			Assert.fail(e.getMessage());
hgs
parents:
diff changeset
   163
		}
hgs
parents:
diff changeset
   164
						
hgs
parents:
diff changeset
   165
		checkContents(actualTokens, expectedTokens1); 
hgs
parents:
diff changeset
   166
hgs
parents:
diff changeset
   167
		// check it works with TRACE_STR2
hgs
parents:
diff changeset
   168
		sourceParser = new SourceParser(factory, factory.createDocument(TRACE_STR2));
hgs
parents:
diff changeset
   169
		actualTokens.clear();
hgs
parents:
diff changeset
   170
		
hgs
parents:
diff changeset
   171
		// parse string
hgs
parents:
diff changeset
   172
		try{
hgs
parents:
diff changeset
   173
			sourceParser.tokenizeParameters(0, actualTokens, true);			
hgs
parents:
diff changeset
   174
		}catch(SourceParserException e){
hgs
parents:
diff changeset
   175
			Assert.fail(e.getMessage());
hgs
parents:
diff changeset
   176
		}
hgs
parents:
diff changeset
   177
						
hgs
parents:
diff changeset
   178
		checkContents(actualTokens, expectedTokens2); 
hgs
parents:
diff changeset
   179
hgs
parents:
diff changeset
   180
		// create the composite string
hgs
parents:
diff changeset
   181
		String TRACE_STR3 = "TRACE_DEBUG_ONLY (" + TRACE_STR1 + "," + TRACE_STR2 + ");";
hgs
parents:
diff changeset
   182
hgs
parents:
diff changeset
   183
		// do a quick check to see that the reference string matches the string generated from list
hgs
parents:
diff changeset
   184
		// we could use java.util.StringTokenizer to generate the expected list, 
hgs
parents:
diff changeset
   185
		// but this is test code for tracecompiler after all
hgs
parents:
diff changeset
   186
		assertTrue(REFERENCE_STR.compareTo(TRACE_STR3) == 0);
hgs
parents:
diff changeset
   187
		
hgs
parents:
diff changeset
   188
		sourceParser = new SourceParser(factory, factory.createDocument(TRACE_STR3));
hgs
parents:
diff changeset
   189
		actualTokens.clear();
hgs
parents:
diff changeset
   190
hgs
parents:
diff changeset
   191
		// this string should parse down to the following members in list
hgs
parents:
diff changeset
   192
		// [0]	"OstTraceExt0( TRACE_DETAILED,DUP5__CONSTRUCTL )" (id=77)	
hgs
parents:
diff changeset
   193
		// [1]	"OstTraceExt3( TRACE_BORDER,DUP99__CONSTRUCTL,"::ConstructL;x=%d;y=%d;z=%d",x,y,z )" (id=78)	
hgs
parents:
diff changeset
   194
		try{
hgs
parents:
diff changeset
   195
			sourceParser.tokenizeParameters(0, actualTokens, true);			
hgs
parents:
diff changeset
   196
		}catch(SourceParserException e){
hgs
parents:
diff changeset
   197
			Assert.fail(e.getMessage());
hgs
parents:
diff changeset
   198
		}
hgs
parents:
diff changeset
   199
		
hgs
parents:
diff changeset
   200
		assertTrue(actualTokens.size() == 2);
hgs
parents:
diff changeset
   201
		final String OST_STR1 = actualTokens.get(0);
hgs
parents:
diff changeset
   202
		assertTrue(OST_STR1.compareTo(TRACE_STR1) == 0);
hgs
parents:
diff changeset
   203
		final String OST_STR2 = actualTokens.get(1);
hgs
parents:
diff changeset
   204
		assertTrue(OST_STR2.compareTo(TRACE_STR2) == 0);
hgs
parents:
diff changeset
   205
		
hgs
parents:
diff changeset
   206
		
hgs
parents:
diff changeset
   207
		// check parsing of first OST macro
hgs
parents:
diff changeset
   208
		sourceParser = new SourceParser(factory, factory.createDocument(OST_STR1));
hgs
parents:
diff changeset
   209
		actualTokens.clear();
hgs
parents:
diff changeset
   210
		try{
hgs
parents:
diff changeset
   211
			sourceParser.tokenizeParameters(0, actualTokens, true);			
hgs
parents:
diff changeset
   212
		}catch(SourceParserException e){
hgs
parents:
diff changeset
   213
			Assert.fail(e.getMessage());
hgs
parents:
diff changeset
   214
		}
hgs
parents:
diff changeset
   215
hgs
parents:
diff changeset
   216
		checkContents(actualTokens, expectedTokens1);
hgs
parents:
diff changeset
   217
		
hgs
parents:
diff changeset
   218
hgs
parents:
diff changeset
   219
		// check parsing of second OST macro
hgs
parents:
diff changeset
   220
		sourceParser = new SourceParser(factory, factory.createDocument(OST_STR2));
hgs
parents:
diff changeset
   221
		actualTokens.clear();
hgs
parents:
diff changeset
   222
		try{
hgs
parents:
diff changeset
   223
			sourceParser.tokenizeParameters(0, actualTokens, true);			
hgs
parents:
diff changeset
   224
		}catch(SourceParserException e){
hgs
parents:
diff changeset
   225
			Assert.fail(e.getMessage());
hgs
parents:
diff changeset
   226
		}
hgs
parents:
diff changeset
   227
hgs
parents:
diff changeset
   228
		checkContents(actualTokens, expectedTokens2);
hgs
parents:
diff changeset
   229
		
hgs
parents:
diff changeset
   230
	}
hgs
parents:
diff changeset
   231
hgs
parents:
diff changeset
   232
	
hgs
parents:
diff changeset
   233
	private static void checkContents(final ArrayList<String> ACTUAL, final ArrayList<String> EXPECTED ){
hgs
parents:
diff changeset
   234
		assertTrue(ACTUAL.size() == EXPECTED.size());
hgs
parents:
diff changeset
   235
		for(int i=0;i < ACTUAL.size();i++){
hgs
parents:
diff changeset
   236
			assertTrue( ACTUAL.get(i).compareTo(EXPECTED.get(i)) == 0);			
hgs
parents:
diff changeset
   237
		}		
hgs
parents:
diff changeset
   238
	}
hgs
parents:
diff changeset
   239
}