ctf: Make events immutable
[deliverable/tracecompass.git] / org.eclipse.linuxtools.ctf.core.tests / src / org / eclipse / linuxtools / ctf / core / tests / types / VariantDeclarationTest.java
index dd9126927435887762d4c0f77d40ffbb3c7bed98..70e154b6385d3a626fd7aa74fdc965425faef04c 100644 (file)
@@ -15,9 +15,18 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assume.assumeTrue;
 
+import java.nio.ByteBuffer;
+
+import org.eclipse.linuxtools.ctf.core.event.io.BitBuffer;
+import org.eclipse.linuxtools.ctf.core.event.scope.IDefinitionScope;
+import org.eclipse.linuxtools.ctf.core.event.types.Definition;
+import org.eclipse.linuxtools.ctf.core.event.types.EnumDeclaration;
+import org.eclipse.linuxtools.ctf.core.event.types.EnumDefinition;
 import org.eclipse.linuxtools.ctf.core.event.types.IDeclaration;
-import org.eclipse.linuxtools.ctf.core.event.types.IDefinitionScope;
+import org.eclipse.linuxtools.ctf.core.event.types.IntegerDeclaration;
+import org.eclipse.linuxtools.ctf.core.event.types.IntegerDefinition;
 import org.eclipse.linuxtools.ctf.core.event.types.StringDeclaration;
+import org.eclipse.linuxtools.ctf.core.event.types.StringDefinition;
 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;
@@ -27,6 +36,8 @@ import org.eclipse.linuxtools.ctf.core.trace.CTFReaderException;
 import org.junit.Before;
 import org.junit.Test;
 
+import com.google.common.collect.ImmutableList;
+
 /**
  * The class <code>VariantDeclarationTest</code> contains tests for the class
  * <code>{@link VariantDeclaration}</code>.
@@ -48,6 +59,52 @@ public class VariantDeclarationTest {
         fixture = new VariantDeclaration();
     }
 
+    private static IDefinitionScope createDefinitionScope() throws CTFReaderException {
+        assumeTrue(testTrace.exists());
+        StructDeclaration declaration = new StructDeclaration(8);
+        VariantDeclaration variantDeclaration = new VariantDeclaration();
+        variantDeclaration.addField("a", IntegerDeclaration.INT_32B_DECL);
+        variantDeclaration.addField("b", IntegerDeclaration.INT_32L_DECL);
+        variantDeclaration.setTag("a");
+
+        EnumDeclaration enumDeclaration = new EnumDeclaration(IntegerDeclaration.UINT_8_DECL);
+        enumDeclaration.add(0, 1, "a");
+        enumDeclaration.add(2, 2, "b");
+        declaration.addField("tag", enumDeclaration);
+        declaration.addField("variant", variantDeclaration);
+        EnumDefinition tagDef = new EnumDefinition(
+                enumDeclaration,
+                null,
+                "tag",
+                new IntegerDefinition(
+                        IntegerDeclaration.UINT_8_DECL,
+                        null,
+                        "test",
+                        0)
+                );
+        VariantDefinition variantDefinition = new VariantDefinition(
+                variantDeclaration,
+                testTrace.getTrace(),
+                "tag",
+                "tag",
+                new StringDefinition(
+                        new StringDeclaration(),
+                        null,
+                        "f",
+                        "tag"
+                ));
+
+        IDefinitionScope definitionScope = new StructDefinition(
+                declaration,
+                variantDefinition,
+                "",
+                ImmutableList.of("tag", variantDefinition.getCurrentFieldName()),
+                new Definition[] { tagDef, variantDefinition }
+                );
+
+        return definitionScope;
+    }
+
     /**
      * Run the VariantDeclaration() constructor test.
      */
@@ -74,35 +131,21 @@ public class VariantDeclarationTest {
      * Run the VariantDefinition createDefinition(DefinitionScope,String) method
      * test.
      *
-     * @throws CTFReaderException Should not happen
+     * @throws CTFReaderException
+     *             Should not happen
      */
     @Test
     public void testCreateDefinition() throws CTFReaderException {
-        fixture.setTag("");
+        fixture.setTag("tag");
+        fixture.addField("a", IntegerDeclaration.UINT_64B_DECL);
         IDefinitionScope definitionScope = createDefinitionScope();
         String fieldName = "";
-        VariantDefinition result = fixture.createDefinition(definitionScope, fieldName);
+        BitBuffer bb = new BitBuffer(ByteBuffer.allocate(100));
+        VariantDefinition result = fixture.createDefinition(definitionScope, fieldName, bb);
 
         assertNotNull(result);
     }
 
-    private static IDefinitionScope createDefinitionScope() throws CTFReaderException {
-        assumeTrue(testTrace.exists());
-        VariantDeclaration declaration = new VariantDeclaration();
-        declaration.setTag("");
-        VariantDeclaration variantDeclaration = new VariantDeclaration();
-        variantDeclaration.setTag("");
-        VariantDefinition variantDefinition = new VariantDefinition(
-                variantDeclaration, testTrace.getTrace(), "");
-        IDefinitionScope definitionScope = new StructDefinition(
-                new StructDeclaration(1L), variantDefinition, "");
-        String fieldName = "";
-
-        VariantDefinition result = new VariantDefinition(declaration,
-                definitionScope, fieldName);
-        return result;
-    }
-
     /**
      * Run the boolean hasField(String) method test.
      */
This page took 0.024589 seconds and 5 git commands to generate.