1 /*******************************************************************************
2 * Copyright (c) 2013 Ericsson
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
9 * Matthew Khouzam - Initial API and implementation
10 *******************************************************************************/
12 package org
.eclipse
.linuxtools
.ctf
.core
.tests
.event
;
14 import static org
.junit
.Assert
.assertEquals
;
15 import static org
.junit
.Assert
.assertNotNull
;
17 import java
.nio
.ByteBuffer
;
18 import java
.nio
.ByteOrder
;
20 import org
.eclipse
.linuxtools
.ctf
.core
.event
.io
.BitBuffer
;
21 import org
.eclipse
.linuxtools
.ctf
.core
.event
.types
.ArrayDeclaration
;
22 import org
.eclipse
.linuxtools
.ctf
.core
.event
.types
.ArrayDefinition
;
23 import org
.eclipse
.linuxtools
.ctf
.core
.event
.types
.Definition
;
24 import org
.eclipse
.linuxtools
.ctf
.core
.event
.types
.Encoding
;
25 import org
.eclipse
.linuxtools
.ctf
.core
.event
.types
.IntegerDeclaration
;
26 import org
.eclipse
.linuxtools
.ctf
.core
.event
.types
.IntegerDefinition
;
27 import org
.eclipse
.linuxtools
.ctf
.core
.event
.types
.SequenceDeclaration
;
28 import org
.eclipse
.linuxtools
.ctf
.core
.event
.types
.SequenceDefinition
;
29 import org
.eclipse
.linuxtools
.ctf
.core
.event
.types
.StringDeclaration
;
30 import org
.eclipse
.linuxtools
.ctf
.core
.event
.types
.StringDefinition
;
31 import org
.eclipse
.linuxtools
.ctf
.core
.event
.types
.StructDeclaration
;
32 import org
.eclipse
.linuxtools
.ctf
.core
.event
.types
.StructDefinition
;
33 import org
.eclipse
.linuxtools
.ctf
.core
.trace
.CTFReaderException
;
34 import org
.junit
.Test
;
37 * The class <code>CTFEventFieldTest</code> contains tests for the class
38 * <code>{@link CTFEventField}</code>.
41 * @version $Revision: 1.0 $
43 @SuppressWarnings("javadoc")
44 public class CTFEventFieldTest
{
46 private static final String fieldName
= "id";
49 * Run the CTFEventField parseField(Definition,String) method test.
50 * @throws CTFReaderException
53 public void testParseField_complex() throws CTFReaderException
{
55 IntegerDeclaration id
= new IntegerDeclaration(len
, false, len
,
56 ByteOrder
.LITTLE_ENDIAN
, Encoding
.ASCII
, null, 32);
57 String lengthName
= "LengthName";
58 StructDeclaration structDec
= new StructDeclaration(0);
59 structDec
.addField(lengthName
, id
);
60 StructDefinition structDef
= new StructDefinition(structDec
, null,
63 structDef
.lookupInteger(lengthName
).setValue(32);
64 SequenceDeclaration sd
= new SequenceDeclaration(lengthName
, id
);
65 Definition fieldDef
= new SequenceDefinition(sd
, structDef
, "TestX");
66 ByteBuffer byb
= ByteBuffer
.allocate(1024);
67 for (int i
= 0; i
< 1024; i
++) {
70 BitBuffer bb
= new BitBuffer(byb
);
73 assertNotNull(fieldDef
);
77 * Run the CTFEventField parseField(Definition,String) method test.
78 * @throws CTFReaderException
81 public void testParseField_simple() {
82 final StringDeclaration elemType
= new StringDeclaration();
83 Definition fieldDef
= elemType
.createDefinition(null, fieldName
);
85 assertNotNull(fieldDef
);
89 * Run the CTFEventField parseField(Definition,String) method test.
92 public void testParseField_simple2() {
93 IntegerDefinition fieldDef
= new IntegerDefinition(
94 new IntegerDeclaration(1, false, 1, ByteOrder
.BIG_ENDIAN
,
95 Encoding
.ASCII
, null, 8), null, fieldName
);
96 fieldDef
.setValue(1L);
98 assertNotNull(fieldDef
);
105 public void testParseField_simple3() {
106 StringDefinition fieldDef
= new StringDefinition(
107 new StringDeclaration(), null, fieldName
);
108 fieldDef
.setString(new StringBuilder("Hello World"));
110 String other
= "\"Hello World\"";
111 assertNotNull(fieldDef
);
112 assertEquals(fieldDef
.toString(), other
);
116 * Run the CTFEventField parseField(Definition,String) method test.
119 public void testParseField_manual() {
120 Definition fieldDef
= new ArrayDefinition(new ArrayDeclaration(20,
121 new IntegerDeclaration(8, false, 8, null, Encoding
.UTF8
, null, 8)),
123 ((IntegerDefinition
) ((ArrayDefinition
) fieldDef
).getDefinitions()[0]).setValue('H');
124 ((IntegerDefinition
) ((ArrayDefinition
) fieldDef
).getDefinitions()[1]).setValue('e');
125 ((IntegerDefinition
) ((ArrayDefinition
) fieldDef
).getDefinitions()[2]).setValue('l');
126 ((IntegerDefinition
) ((ArrayDefinition
) fieldDef
).getDefinitions()[3]).setValue('l');
127 ((IntegerDefinition
) ((ArrayDefinition
) fieldDef
).getDefinitions()[4]).setValue('o');
128 ((IntegerDefinition
) ((ArrayDefinition
) fieldDef
).getDefinitions()[5]).setValue(' ');
129 ((IntegerDefinition
) ((ArrayDefinition
) fieldDef
).getDefinitions()[6]).setValue('W');
130 ((IntegerDefinition
) ((ArrayDefinition
) fieldDef
).getDefinitions()[7]).setValue('o');
131 ((IntegerDefinition
) ((ArrayDefinition
) fieldDef
).getDefinitions()[8]).setValue('r');
132 ((IntegerDefinition
) ((ArrayDefinition
) fieldDef
).getDefinitions()[9]).setValue('l');
133 ((IntegerDefinition
) ((ArrayDefinition
) fieldDef
).getDefinitions()[10]).setValue('d');
134 ((IntegerDefinition
) ((ArrayDefinition
) fieldDef
).getDefinitions()[11]).setValue(0);
136 assertNotNull(fieldDef
);
140 * Run the CTFEventField parseField(Definition,String) method test.
143 public void testParseField_manual2() {
144 Definition fieldDef
= new ArrayDefinition(new ArrayDeclaration(12,
145 new IntegerDeclaration(32, false, 32, null, null, null, 8)), null,
147 ((IntegerDefinition
) ((ArrayDefinition
) fieldDef
).getDefinitions()[0]).setValue('H');
148 ((IntegerDefinition
) ((ArrayDefinition
) fieldDef
).getDefinitions()[1]).setValue('e');
149 ((IntegerDefinition
) ((ArrayDefinition
) fieldDef
).getDefinitions()[2]).setValue('l');
150 ((IntegerDefinition
) ((ArrayDefinition
) fieldDef
).getDefinitions()[3]).setValue('l');
151 ((IntegerDefinition
) ((ArrayDefinition
) fieldDef
).getDefinitions()[4]).setValue('o');
152 ((IntegerDefinition
) ((ArrayDefinition
) fieldDef
).getDefinitions()[5]).setValue(' ');
153 ((IntegerDefinition
) ((ArrayDefinition
) fieldDef
).getDefinitions()[6]).setValue('W');
154 ((IntegerDefinition
) ((ArrayDefinition
) fieldDef
).getDefinitions()[7]).setValue('o');
155 ((IntegerDefinition
) ((ArrayDefinition
) fieldDef
).getDefinitions()[8]).setValue('r');
156 ((IntegerDefinition
) ((ArrayDefinition
) fieldDef
).getDefinitions()[9]).setValue('l');
157 ((IntegerDefinition
) ((ArrayDefinition
) fieldDef
).getDefinitions()[10]).setValue('d');
158 ((IntegerDefinition
) ((ArrayDefinition
) fieldDef
).getDefinitions()[11]).setValue(0);
160 assertNotNull(fieldDef
);
161 String other
= "[ 72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 0 ]";
162 assertEquals(other
, fieldDef
.toString());