Commit | Line | Data |
---|---|---|
4bd7f2db AM |
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 | ||
866e5b51 FC |
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 | ||
486efb2e | 20 | import org.eclipse.linuxtools.ctf.core.event.io.BitBuffer; |
866e5b51 FC |
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; | |
25a9b50c | 33 | import org.eclipse.linuxtools.ctf.core.trace.CTFReaderException; |
866e5b51 FC |
34 | import org.junit.Test; |
35 | ||
36 | /** | |
37 | * The class <code>CTFEventFieldTest</code> contains tests for the class | |
38 | * <code>{@link CTFEventField}</code>. | |
284fdee8 | 39 | * |
866e5b51 FC |
40 | * @author ematkho |
41 | * @version $Revision: 1.0 $ | |
866e5b51 | 42 | */ |
be6df2d8 | 43 | @SuppressWarnings("javadoc") |
866e5b51 | 44 | public class CTFEventFieldTest { |
284fdee8 | 45 | |
4a9c1f07 | 46 | private static final String fieldName = "id"; |
284fdee8 | 47 | |
866e5b51 FC |
48 | /** |
49 | * Run the CTFEventField parseField(Definition,String) method test. | |
fd74e6c1 | 50 | * @throws CTFReaderException |
866e5b51 FC |
51 | */ |
52 | @Test | |
25a9b50c | 53 | public void testParseField_complex() throws CTFReaderException { |
866e5b51 FC |
54 | int len = 32; |
55 | IntegerDeclaration id = new IntegerDeclaration(len, false, len, | |
fd74e6c1 | 56 | ByteOrder.LITTLE_ENDIAN, Encoding.ASCII, null, 32); |
4a9c1f07 | 57 | String lengthName = "LengthName"; |
866e5b51 FC |
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); | |
4a9c1f07 | 65 | Definition fieldDef = new SequenceDefinition(sd, structDef, "TestX"); |
866e5b51 FC |
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. | |
fd74e6c1 | 78 | * @throws CTFReaderException |
866e5b51 FC |
79 | */ |
80 | @Test | |
4c9d2941 MK |
81 | public void testParseField_simple() { |
82 | final StringDeclaration elemType = new StringDeclaration(); | |
83 | Definition fieldDef = elemType.createDefinition(null, fieldName); | |
866e5b51 FC |
84 | |
85 | assertNotNull(fieldDef); | |
86 | } | |
284fdee8 | 87 | |
866e5b51 FC |
88 | /** |
89 | * Run the CTFEventField parseField(Definition,String) method test. | |
90 | */ | |
91 | @Test | |
92 | public void testParseField_simple2() { | |
93 | IntegerDefinition fieldDef = new IntegerDefinition( | |
4311ac8b | 94 | new IntegerDeclaration(1, false, 1, ByteOrder.BIG_ENDIAN, |
fd74e6c1 | 95 | Encoding.ASCII, null, 8), null, fieldName); |
866e5b51 FC |
96 | fieldDef.setValue(1L); |
97 | ||
98 | assertNotNull(fieldDef); | |
99 | } | |
284fdee8 | 100 | |
866e5b51 | 101 | /** |
284fdee8 | 102 | * |
866e5b51 FC |
103 | */ |
104 | @Test | |
105 | public void testParseField_simple3() { | |
106 | StringDefinition fieldDef = new StringDefinition( | |
107 | new StringDeclaration(), null, fieldName); | |
4a9c1f07 | 108 | fieldDef.setString(new StringBuilder("Hello World")); |
866e5b51 | 109 | |
4a9c1f07 | 110 | String other = "\"Hello World\""; |
866e5b51 FC |
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, | |
fd74e6c1 | 121 | new IntegerDeclaration(8, false, 8, null, Encoding.UTF8, null, 8)), |
866e5b51 FC |
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, | |
fd74e6c1 | 145 | new IntegerDeclaration(32, false, 32, null, null, null, 8)), null, |
866e5b51 FC |
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); | |
4a9c1f07 | 161 | String other = "[ 72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 0 ]"; |
866e5b51 FC |
162 | assertEquals(other, fieldDef.toString()); |
163 | } | |
164 | } |