From c9b80f52118ba867c0a5cc94a7ea9776b1baeff4 Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Wed, 20 Oct 2010 11:17:28 +0000
Subject: [PATCH] more TypedTableModelBuilder tests

SVN: 18383
---
 .../util/TypedTableModelBuilderTest.java      | 95 ++++++++++++++++++-
 1 file changed, 91 insertions(+), 4 deletions(-)

diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/util/TypedTableModelBuilderTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/util/TypedTableModelBuilderTest.java
index 2d14ad27ae3..3171e188636 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/util/TypedTableModelBuilderTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/shared/util/TypedTableModelBuilderTest.java
@@ -16,6 +16,9 @@
 
 package ch.systemsx.cisd.openbis.generic.shared.util;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
 
 import org.testng.AssertJUnit;
@@ -23,14 +26,18 @@ import org.testng.annotations.Test;
 
 import com.google.gwt.user.client.rpc.IsSerializable;
 
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DateTableCell;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DoubleTableCell;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityProperty;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IntegerTableCell;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.StringTableCell;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelColumnHeader;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRowWithObject;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TypedTableModel;
-import ch.systemsx.cisd.openbis.generic.shared.util.TypedTableModelBuilder;
 
 /**
  * 
@@ -47,7 +54,7 @@ public class TypedTableModelBuilderTest extends AssertJUnit
     public void testSimpleBuilding()
     {
         TypedTableModelBuilder<IsSerializable> builder = new TypedTableModelBuilder<IsSerializable>();
-        builder.addColumn("A").withTitle("Alpha");
+        builder.addColumn("A").withTitle("Alpha").hideByDefault();
         builder.addColumn("B").withDataType(DataTypeCode.REAL).withDefaultWidth(500);
         MockSerializable object = new MockSerializable();
         builder.addRow(object);
@@ -58,9 +65,11 @@ public class TypedTableModelBuilderTest extends AssertJUnit
         List<TableModelColumnHeader> headers = model.getHeader();
         assertHeadersOrder(headers, "A", "B");
         assertEquals("Alpha", headers.get(0).getTitle());
+        assertEquals(true, headers.get(0).isHidden());
         assertEquals(150, headers.get(0).getDefaultColumnWidth());
         assertEquals(DataTypeCode.VARCHAR, headers.get(0).getDataType());
         assertEquals(null, headers.get(1).getTitle());
+        assertEquals(false, headers.get(1).isHidden());
         assertEquals(500, headers.get(1).getDefaultColumnWidth());
         assertEquals(DataTypeCode.REAL, headers.get(1).getDataType());
         List<TableModelRowWithObject<IsSerializable>> rows = model.getRows();
@@ -71,6 +80,83 @@ public class TypedTableModelBuilderTest extends AssertJUnit
         assertEquals(1, rows.size());
     }
     
+    @Test
+    public void testBuildingWithGroups()
+    {
+        TypedTableModelBuilder<IsSerializable> builder = new TypedTableModelBuilder<IsSerializable>();
+        MockSerializable object = new MockSerializable();
+        builder.addRow(object);
+        builder.columnGroup("g1").column("a1").addDate(new Date(4711));
+        builder.columnGroup("g2").column("a2").addDouble(2.125);
+        builder.columnGroup("g1").column("b1").addString("hello");
+        builder.columnGroup("g2").column("b2").addInteger(42L);
+        
+        TypedTableModel<IsSerializable> model = builder.getModel();
+        List<TableModelColumnHeader> headers = model.getHeader();
+        assertHeadersOrder(headers, "a1", "b1", "a2", "b2");
+        assertEquals(DataTypeCode.TIMESTAMP, headers.get(0).getDataType());
+        assertEquals(DataTypeCode.VARCHAR, headers.get(1).getDataType());
+        assertEquals(DataTypeCode.REAL, headers.get(2).getDataType());
+        assertEquals(DataTypeCode.INTEGER, headers.get(3).getDataType());
+        List<TableModelRowWithObject<IsSerializable>> rows = model.getRows();
+        assertEquals(new DateTableCell(4711), rows.get(0).getValues().get(0));
+        assertEquals(new StringTableCell("hello"), rows.get(0).getValues().get(1));
+        assertEquals(new DoubleTableCell(2.125), rows.get(0).getValues().get(2));
+        assertEquals(new IntegerTableCell(42), rows.get(0).getValues().get(3));
+        assertEquals(1, rows.size());
+    }
+    
+    @Test
+    public void testAddProperties()
+    {
+        TypedTableModelBuilder<IsSerializable> builder = new TypedTableModelBuilder<IsSerializable>();
+        builder.addRow(new MockSerializable());
+        IEntityProperty p1 = property("beta", "3.25", DataTypeCode.REAL);
+        IEntityProperty p2 = property("alpha", "hello\nworld", DataTypeCode.MULTILINE_VARCHAR);
+        IEntityProperty p3 = property("gamma", "hello", DataTypeCode.VARCHAR);
+        builder.columnGroup("g").addProperties("MY-", Arrays.asList(p1, p2, p3));
+        builder.addRow(new MockSerializable());
+        IEntityProperty p4 = property("gamma", "hi", DataTypeCode.VARCHAR);
+        IEntityProperty p5 = property("kappa", "42", DataTypeCode.INTEGER);
+        builder.columnGroup("g").addProperties("MY-", Arrays.asList(p4, p5));
+
+        
+        TypedTableModel<IsSerializable> model = builder.getModel();
+        List<TableModelColumnHeader> headers = model.getHeader();
+        assertHeadersOrder(headers, "MY-ALPHA", "MY-BETA", "MY-GAMMA", "MY-KAPPA");
+        assertEquals("alpha", headers.get(0).getTitle());
+        assertEquals(DataTypeCode.MULTILINE_VARCHAR, headers.get(0).getDataType());
+        assertEquals("beta", headers.get(1).getTitle());
+        assertEquals(DataTypeCode.REAL, headers.get(1).getDataType());
+        assertEquals("gamma", headers.get(2).getTitle());
+        assertEquals(DataTypeCode.VARCHAR, headers.get(2).getDataType());
+        assertEquals("kappa", headers.get(3).getTitle());
+        assertEquals(DataTypeCode.INTEGER, headers.get(3).getDataType());
+        List<TableModelRowWithObject<IsSerializable>> rows = model.getRows();
+        assertEquals(new StringTableCell("hello\nworld"), rows.get(0).getValues().get(0));
+        assertEquals(new DoubleTableCell(3.25), rows.get(0).getValues().get(1));
+        assertEquals(new StringTableCell("hello"), rows.get(0).getValues().get(2));
+        assertEquals(new StringTableCell(""), rows.get(0).getValues().get(3));
+        assertEquals(new StringTableCell(""), rows.get(1).getValues().get(0));
+        assertEquals(new StringTableCell(""), rows.get(1).getValues().get(1));
+        assertEquals(new StringTableCell("hi"), rows.get(1).getValues().get(2));
+        assertEquals(new IntegerTableCell(42), rows.get(1).getValues().get(3));
+        
+        assertEquals(2, rows.size());
+    }
+    
+    private IEntityProperty property(String key, String value, DataTypeCode type)
+    {
+        EntityProperty property = new EntityProperty();
+        PropertyType propertyType = new PropertyType();
+        propertyType.setCode(key.toUpperCase());
+        propertyType.setLabel(key);
+        propertyType.setDataType(new DataType(type));
+        property.setPropertyType(propertyType);
+        property.setValue(value);
+        return property;
+    }
+    
     @Test
     public void testAddIntegerValueToColumn()
     {
@@ -146,12 +232,13 @@ public class TypedTableModelBuilderTest extends AssertJUnit
     
     private void assertHeadersOrder(List<TableModelColumnHeader> headers, String... headerIds)
     {
+        List<String> actualHeaderIds = new ArrayList<String>();
         for (int i = 0; i < headerIds.length; i++)
         {
             TableModelColumnHeader header = headers.get(i);
-            assertEquals(headerIds[i], header.getId());
             assertEquals(i, header.getIndex());
+            actualHeaderIds.add(header.getId());
         }
-        assertEquals(headerIds.length, headers.size());
+        assertEquals(Arrays.asList(headerIds).toString(), actualHeaderIds.toString());
     }
 }
-- 
GitLab