Integrate Babeltrace CTF tests and fix parsing problems
[deliverable/tracecompass.git] / org.eclipse.linuxtools.ctf.core.tests / src / org / eclipse / linuxtools / ctf / core / tests / event / CTFEventFieldTest.java
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
7 *
8 * Contributors:
9 * Matthew Khouzam - Initial API and implementation
10 *******************************************************************************/
11
12 package org.eclipse.linuxtools.ctf.core.tests.event;
13
14 import static org.junit.Assert.assertEquals;
15 import static org.junit.Assert.assertNotNull;
16
17 import java.nio.ByteBuffer;
18 import java.nio.ByteOrder;
19
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;
35
36 /**
37 * The class <code>CTFEventFieldTest</code> contains tests for the class
38 * <code>{@link CTFEventField}</code>.
39 *
40 * @author ematkho
41 * @version $Revision: 1.0 $
42 */
43 @SuppressWarnings("javadoc")
44 public class CTFEventFieldTest {
45
46 private static final String fieldName = "id";
47
48 /**
49 * Run the CTFEventField parseField(Definition,String) method test.
50 * @throws CTFReaderException
51 */
52 @Test
53 public void testParseField_complex() throws CTFReaderException {
54 int len = 32;
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,
61 lengthName);
62
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++) {
68 byb.put((byte) i);
69 }
70 BitBuffer bb = new BitBuffer(byb);
71 fieldDef.read(bb);
72
73 assertNotNull(fieldDef);
74 }
75
76 /**
77 * Run the CTFEventField parseField(Definition,String) method test.
78 * @throws CTFReaderException
79 */
80 @Test
81 public void testParseField_simple() {
82 final StringDeclaration elemType = new StringDeclaration();
83 Definition fieldDef = elemType.createDefinition(null, fieldName);
84
85 assertNotNull(fieldDef);
86 }
87
88 /**
89 * Run the CTFEventField parseField(Definition,String) method test.
90 */
91 @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);
97
98 assertNotNull(fieldDef);
99 }
100
101 /**
102 *
103 */
104 @Test
105 public void testParseField_simple3() {
106 StringDefinition fieldDef = new StringDefinition(
107 new StringDeclaration(), null, fieldName);
108 fieldDef.setString(new StringBuilder("Hello World"));
109
110 String other = "\"Hello World\"";
111 assertNotNull(fieldDef);
112 assertEquals(fieldDef.toString(), other);
113 }
114
115 /**
116 * Run the CTFEventField parseField(Definition,String) method test.
117 */
118 @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)),
122 null, fieldName);
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);
135
136 assertNotNull(fieldDef);
137 }
138
139 /**
140 * Run the CTFEventField parseField(Definition,String) method test.
141 */
142 @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,
146 fieldName);
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);
159
160 assertNotNull(fieldDef);
161 String other = "[ 72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 0 ]";
162 assertEquals(other, fieldDef.toString());
163 }
164 }
This page took 0.03661 seconds and 6 git commands to generate.