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
.types
;
14 import static org
.junit
.Assert
.assertEquals
;
15 import static org
.junit
.Assert
.assertNotNull
;
16 import static org
.junit
.Assert
.assertNull
;
18 import java
.nio
.ByteBuffer
;
20 import org
.eclipse
.jdt
.annotation
.NonNull
;
21 import org
.eclipse
.linuxtools
.ctf
.core
.event
.io
.BitBuffer
;
22 import org
.eclipse
.linuxtools
.ctf
.core
.event
.types
.AbstractArrayDefinition
;
23 import org
.eclipse
.linuxtools
.ctf
.core
.event
.types
.Definition
;
24 import org
.eclipse
.linuxtools
.ctf
.core
.event
.types
.EnumDeclaration
;
25 import org
.eclipse
.linuxtools
.ctf
.core
.event
.types
.EnumDefinition
;
26 import org
.eclipse
.linuxtools
.ctf
.core
.event
.types
.IntegerDeclaration
;
27 import org
.eclipse
.linuxtools
.ctf
.core
.event
.types
.IntegerDefinition
;
28 import org
.eclipse
.linuxtools
.ctf
.core
.event
.types
.StringDeclaration
;
29 import org
.eclipse
.linuxtools
.ctf
.core
.event
.types
.StringDefinition
;
30 import org
.eclipse
.linuxtools
.ctf
.core
.event
.types
.StructDeclaration
;
31 import org
.eclipse
.linuxtools
.ctf
.core
.event
.types
.StructDefinition
;
32 import org
.eclipse
.linuxtools
.ctf
.core
.event
.types
.VariantDeclaration
;
33 import org
.eclipse
.linuxtools
.ctf
.core
.event
.types
.VariantDefinition
;
34 import org
.eclipse
.linuxtools
.ctf
.core
.tests
.io
.Util
;
35 import org
.eclipse
.linuxtools
.ctf
.core
.trace
.CTFReaderException
;
36 import org
.eclipse
.linuxtools
.internal
.ctf
.core
.event
.types
.SequenceDeclaration
;
37 import org
.junit
.Before
;
38 import org
.junit
.Test
;
41 * The class <code>StructDefinitionTest</code> contains tests for the class
42 * <code>{@link StructDefinition}</code>.
45 * @version $Revision: 1.0 $
47 public class StructDefinitionTest
{
49 private static final @NonNull String TEST_STRUCT_ID
= "testStruct";
50 private static final @NonNull String ENUM_2
= "y";
51 private static final @NonNull String ENUM_1
= "x";
52 private static final @NonNull String TAG_ID
= "Tag";
53 private static final @NonNull String INT_ID
= "_id";
54 private static final @NonNull String STRING_ID
= "_args";
55 private static final @NonNull String ENUM_ID
= "_enumArgs";
56 private static final @NonNull String SEQUENCE_ID
= "_seq";
57 private static final @NonNull String LENGTH_SEQ
= "_len";
58 private static final @NonNull String VAR_FIELD_NAME
= "SomeVariant";
60 private StructDefinition fixture
;
61 private StructDefinition emptyStruct
;
62 private StructDefinition simpleStruct
;
65 * Perform pre-test initialization.
67 * @throws CTFReaderException
71 public void setUp() throws CTFReaderException
{
72 StructDeclaration sDec
= new StructDeclaration(12);
73 IntegerDeclaration id
= IntegerDeclaration
.INT_32B_DECL
;
74 IntegerDeclaration lenDec
= IntegerDeclaration
.UINT_8_DECL
;
75 StringDeclaration sd
= new StringDeclaration();
76 EnumDeclaration ed
= new EnumDeclaration(id
);
77 SequenceDeclaration seqDec
= new SequenceDeclaration(LENGTH_SEQ
, id
);
78 VariantDeclaration varDec
= new VariantDeclaration();
79 EnumDeclaration tagDec
= new EnumDeclaration(id
);
80 tagDec
.add(0, 1, ENUM_1
);
81 tagDec
.add(2, 3, ENUM_2
);
82 varDec
.addField(ENUM_2
, id
);
83 varDec
.addField(ENUM_1
, sd
);
84 varDec
.setTag(TAG_ID
);
85 sDec
.addField(INT_ID
, id
);
86 sDec
.addField(STRING_ID
, sd
);
87 sDec
.addField(ENUM_ID
, ed
);
88 sDec
.addField(TAG_ID
, tagDec
);
89 sDec
.addField(LENGTH_SEQ
, lenDec
);
90 sDec
.addField(SEQUENCE_ID
, seqDec
);
91 sDec
.addField(VAR_FIELD_NAME
, varDec
);
92 byte bytes
[] = new byte[100];
96 BitBuffer bb
= new BitBuffer(Util
.testMemory(ByteBuffer
.wrap(bytes
)));
97 fixture
= sDec
.createDefinition(null, TEST_STRUCT_ID
, bb
);
98 EnumDefinition eDef
= tagDec
.createDefinition(fixture
, TAG_ID
, bb
);
100 VariantDefinition vd
= varDec
.createDefinition(fixture
, VAR_FIELD_NAME
, bb
);
102 // Create an empty struct
103 StructDeclaration esDec
= new StructDeclaration(32);
104 emptyStruct
= esDec
.createDefinition(null, TEST_STRUCT_ID
, bb
);
106 // Create a simple struct with two items
107 StructDeclaration ssDec
= new StructDeclaration(32);
108 ssDec
.addField(INT_ID
, id
);
109 ssDec
.addField(STRING_ID
, sd
);
110 simpleStruct
= ssDec
.createDefinition(null, TEST_STRUCT_ID
, bb
);
114 * Run the StructDeclaration getDeclaration() method test.
117 public void testGetDeclaration() {
118 StructDeclaration result
= fixture
.getDeclaration();
119 assertNotNull(result
);
123 * Run the HashMap<String, Definition> getDefinitions() method test.
126 public void testGetDefinitions_1() {
127 Definition result
= fixture
.getDefinition("_id");
128 assertNotNull(result
);
132 * Run the ArrayDefinition lookupArray(String) method test.
135 public void testLookupArray() {
136 String name
= INT_ID
;
137 AbstractArrayDefinition result
= fixture
.lookupArrayDefinition(name
);
142 * Run the Definition lookupDefinition(String) method test.
145 public void testLookupDefinition() {
146 String lookupPath
= "args";
147 Definition result
= fixture
.lookupDefinition(lookupPath
);
149 assertNotNull(result
);
153 * Run the EnumDefinition lookupEnum(String) method test.
156 public void testLookupEnum() {
157 String name
= ENUM_ID
;
158 EnumDefinition result
= fixture
.lookupEnum(name
);
159 assertNotNull(result
);
163 * Run the IntegerDefinition lookupInteger(String) method test.
166 public void testLookupInteger_1() {
168 IntegerDefinition result
= fixture
.lookupInteger(name
);
169 assertNotNull(result
);
173 * Run the IntegerDefinition lookupInteger(String) method test.
176 public void testLookupInteger_2() {
177 String name
= VAR_FIELD_NAME
;
178 IntegerDefinition result
= fixture
.lookupInteger(name
);
183 * Run the SequenceDefinition lookupSequence(String) method test.
186 public void testLookupFixedStringDefinition() {
187 String name
= SEQUENCE_ID
;
188 AbstractArrayDefinition result
= fixture
.lookupArrayDefinition(name
);
189 assertNotNull(result
);
193 * Run the StringDefinition lookupString(String) method test.
196 public void testLookupString() {
197 String name
= VAR_FIELD_NAME
;
198 StringDefinition result
= fixture
.lookupString(name
);
204 * Run the StructDefinition lookupStruct(String) method test.
207 public void testLookupStruct() {
208 String name
= VAR_FIELD_NAME
;
209 StructDefinition result
= fixture
.lookupStruct(name
);
215 * Run the VariantDefinition lookupVariant(String) method test.
218 public void testLookupVariant() {
219 String name
= VAR_FIELD_NAME
;
220 VariantDefinition result
= fixture
.lookupVariant(name
);
222 assertNotNull(result
);
226 * Run the String toString() method test.
229 public void testToString() {
230 String result
= fixture
.toString();
231 assertNotNull(result
);
233 result
= emptyStruct
.toString();
234 assertEquals("{ }", result
);
236 result
= simpleStruct
.toString();
237 assertEquals("{ _id = 0, _args = \"\" }", result
);