ctf: Throw CTFReaderException in the BitBuffer API
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.core.tests / src / org / eclipse / linuxtools / tmf / core / tests / ctfadaptor / CtfTmfEventFieldTest.java
index 6a512694e3e2fe2094b42470e6590d88d557c36a..42414bcfb6b93915fa747a1314942d4af3e80c32 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2012 Ericsson
+ * Copyright (c) 2012, 2013 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -14,6 +14,7 @@
 package org.eclipse.linuxtools.tmf.core.tests.ctfadaptor;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertArrayEquals;
 
 import java.nio.ByteOrder;
 
@@ -21,6 +22,7 @@ import org.eclipse.linuxtools.ctf.core.event.io.BitBuffer;
 import org.eclipse.linuxtools.ctf.core.event.types.ArrayDeclaration;
 import org.eclipse.linuxtools.ctf.core.event.types.Definition;
 import org.eclipse.linuxtools.ctf.core.event.types.Encoding;
+import org.eclipse.linuxtools.ctf.core.event.types.EnumDeclaration;
 import org.eclipse.linuxtools.ctf.core.event.types.FloatDeclaration;
 import org.eclipse.linuxtools.ctf.core.event.types.FloatDefinition;
 import org.eclipse.linuxtools.ctf.core.event.types.IntegerDeclaration;
@@ -28,8 +30,9 @@ import org.eclipse.linuxtools.ctf.core.event.types.SequenceDeclaration;
 import org.eclipse.linuxtools.ctf.core.event.types.StringDeclaration;
 import org.eclipse.linuxtools.ctf.core.event.types.StructDeclaration;
 import org.eclipse.linuxtools.ctf.core.event.types.StructDefinition;
+import org.eclipse.linuxtools.ctf.core.event.types.VariantDeclaration;
+import org.eclipse.linuxtools.ctf.core.trace.CTFReaderException;
 import org.eclipse.linuxtools.tmf.core.ctfadaptor.CtfTmfEventField;
-import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -40,7 +43,6 @@ import org.junit.Test;
  * @author ematkho
  * @version 1.0
  */
-@SuppressWarnings("nls")
 public class CtfTmfEventFieldTest {
 
     private static final String ROOT = "root";
@@ -51,24 +53,18 @@ public class CtfTmfEventFieldTest {
     private static final String LEN = "len";
     private static final String INT = "int";
     private static final String NAME = "test";
+    private static final String STRUCT = "struct";
+    private static final String VARIANT = "variant";
+    private static final String ENUM = "enum";
 
     private StructDefinition fixture;
 
-    /**
-     * Launch the test.
-     *
-     * @param args
-     *            the command line arguments
-     */
-    public static void main(String[] args) {
-        new org.junit.runner.JUnitCore().run(CtfTmfEventFieldTest.class);
-    }
-
     /**
      * Perform pre-test initialization.
+     * @throws CTFReaderException error
      */
     @Before
-    public void setUp() {
+    public void setUp() throws CTFReaderException {
         StructDeclaration sDec = new StructDeclaration(1l);
         StringDeclaration strDec = new StringDeclaration();
         IntegerDeclaration intDec = new IntegerDeclaration(8, false, 8,
@@ -77,32 +73,41 @@ public class CtfTmfEventFieldTest {
                 ByteOrder.BIG_ENDIAN, 8);
         ArrayDeclaration arrDec = new ArrayDeclaration(2, intDec);
         SequenceDeclaration seqDec = new SequenceDeclaration(LEN, intDec);
+        StructDeclaration structDec = new StructDeclaration(32);
+        EnumDeclaration enumDec = new EnumDeclaration(intDec);
+        VariantDeclaration varDec = new VariantDeclaration();
         sDec.addField(INT, intDec);
         sDec.addField(LEN, intDec);
         sDec.addField(FLOAT, flDec);
         sDec.addField(STR, strDec);
         sDec.addField(ARRAY, arrDec);
         sDec.addField(SEQ, seqDec);
+        structDec.addField(STR, strDec);
+        structDec.addField(INT, intDec);
+        sDec.addField(STRUCT, structDec);
+        enumDec.add(0, 1, LEN);
+        enumDec.add(2, 3, FLOAT);
+        sDec.addField(ENUM, enumDec);
+        varDec.addField(LEN, intDec);
+        varDec.addField(FLOAT, flDec);
+        varDec.setTag(ENUM);
+        sDec.addField(VARIANT, varDec);
         fixture = sDec.createDefinition(fixture, ROOT);
-        int capacity = 1024;
+        int capacity = 2048;
         java.nio.ByteBuffer bb = java.nio.ByteBuffer.allocateDirect(capacity);
         for (int i = 0; i < capacity; i++) {
             bb.put((byte) 2);
         }
         bb.position(20);
         bb.put((byte) 0);
+        bb.position(40);
+        bb.put((byte) 0);
+        bb.position(60);
+        bb.put((byte) 0);
         bb.position(0);
         fixture.read(new BitBuffer(bb));
     }
 
-    /**
-     * Perform post-test clean-up.
-     */
-    @After
-    public void tearDown() {
-        // Add additional tear down code here
-    }
-
     /**
      * Run the CtfTmfEventField parseField(Definition,String) method test.
      */
@@ -120,7 +125,7 @@ public class CtfTmfEventFieldTest {
     public void testParseField_array() {
         Definition fieldDef = fixture.lookupArray(ARRAY);
         CtfTmfEventField result = CtfTmfEventField.parseField(fieldDef, NAME);
-        assertEquals("test=[2, 2]", result.toString());
+        assertEquals("test=[02, 02]", result.toString());
     }
 
     /**
@@ -140,7 +145,7 @@ public class CtfTmfEventFieldTest {
     public void testParseField_sequence() {
         Definition fieldDef = fixture.lookupDefinition(SEQ);
         CtfTmfEventField result = CtfTmfEventField.parseField(fieldDef, NAME);
-        assertEquals("test=[2, 2]", result.toString());
+        assertEquals("test=[02, 02]", result.toString());
     }
 
     /**
@@ -150,7 +155,9 @@ public class CtfTmfEventFieldTest {
     public void testParseField_sequence_value() {
         Definition fieldDef = fixture.lookupDefinition(SEQ);
         CtfTmfEventField result = CtfTmfEventField.parseField(fieldDef, NAME);
-        assertEquals("[2, 2]", result.getValue().toString());
+        long[] values = (long[]) result.getValue();
+        long[] expected = new long[] { 2, 2 };
+        assertArrayEquals(expected, values);
     }
 
     /**
@@ -162,4 +169,34 @@ public class CtfTmfEventFieldTest {
         CtfTmfEventField result = CtfTmfEventField.parseField(fieldDef, NAME);
         assertEquals("test=\ 2\ 2\ 2\ 2\ 2\ 2\ 2\ 2\ 2\ 2\ 2\ 2\ 2\ 2", result.toString());
     }
+
+    /**
+     * Run the CtfTmfEventField parseField(Definition,String) method test.
+     */
+    @Test
+    public void testParseField_struct() {
+        Definition fieldDef = fixture.lookupDefinition(STRUCT);
+        CtfTmfEventField result = CtfTmfEventField.parseField(fieldDef, NAME);
+        assertEquals("test=[str=\ 2\ 2\ 2\ 2\ 2\ 2\ 2\ 2\ 2\ 2\ 2\ 2, int=02]", result.toString());
+    }
+
+    /**
+     * Run the CtfTmfEventField parseField(Definition,String) method test.
+     */
+    @Test
+    public void testParseField_enum() {
+        Definition fieldDef = fixture.lookupDefinition(ENUM);
+        CtfTmfEventField result = CtfTmfEventField.parseField(fieldDef, NAME);
+        assertEquals("test=float", result.toString());
+    }
+
+    /**
+     * Run the CtfTmfEventField parseField(Definition,String) method test.
+     */
+    @Test
+    public void testParseField_variant() {
+        Definition fieldDef = fixture.lookupDefinition(VARIANT);
+        CtfTmfEventField result = CtfTmfEventField.parseField(fieldDef, NAME);
+        assertEquals("test=float=9.551467814359616E-38", result.toString());
+    }
 }
This page took 0.043976 seconds and 5 git commands to generate.