package org.aplikator.shared.rpc.marshaller; import java.util.Arrays; import org.aplikator.client.shared.data.ListItem; import org.aplikator.client.shared.data.PrimaryKey; import org.aplikator.client.shared.descriptor.*; import org.aplikator.client.shared.rpc.marshaller.FormDTOMarshaller; import org.aplikator.client.shared.rpc.marshaller.FunctionDTOMarshaller; import org.aplikator.client.shared.rpc.marshaller.ListItemMarshaller; import org.aplikator.client.shared.rpc.marshaller.PrimaryKeyMarshaller; import org.aplikator.client.shared.rpc.marshaller.PropertyDTOMarshaller; import org.aplikator.client.shared.rpc.marshaller.QueryDescriptorDTOMarshaller; import org.aplikator.client.shared.rpc.marshaller.SortDescriptorDTOMarshaller; import org.aplikator.client.shared.rpc.marshaller.WidgetDTOMarshaller; import org.easymock.EasyMock; import org.jboss.errai.marshalling.client.api.Marshaller; import org.jboss.errai.marshalling.client.api.MarshallingSession; import org.jboss.errai.marshalling.client.marshallers.StringMarshaller; import org.jboss.errai.marshalling.server.JSONDecoder; import org.junit.Assert; import junit.framework.TestCase; public class WidgetDTOMarshallerTest extends TestCase { public static PropertyDTO prop() { PropertyDTO prop = new PropertyDTO(); prop.marshallInitialization("id", "property"); prop.setType("string"); prop.setSize(33.3); prop.setEditable(true); prop.setRequired(false); return prop; } public void testMarshallPanel() { MarshallingSession session = ctx(); PanelDTO pdto = panel(); WidgetDTOMarshaller marshaller = new WidgetDTOMarshaller(); String marshall = marshaller.marshall(pdto, session); WidgetDTO demarshalled = marshaller.demarshall(JSONDecoder.decode(marshall), session); Assert.assertEquals(pdto.isFrame(), ((PanelDTO) demarshalled).isFrame()); Assert.assertEquals(pdto.isEnabled(), ((PanelDTO) demarshalled).isEnabled()); Assert.assertEquals(pdto.isHorizontal(), ((PanelDTO) demarshalled).isHorizontal()); Assert.assertEquals(pdto.getChildren().size(), ((PanelDTO) demarshalled).getChildren().size()); TextFieldDTO marshalled = (TextFieldDTO) ((PanelDTO) demarshalled).getChildren().get(0); TextFieldDTO notMarshalled = (TextFieldDTO) pdto.getChildren().get(0); Assert.assertEquals(notMarshalled.getFormatPattern(), marshalled.getFormatPattern()); Assert.assertEquals(notMarshalled.getSize(), marshalled.getSize()); Assert.assertEquals(notMarshalled.getProperty(), marshalled.getProperty()); System.out.println(marshalled.getProperty()); } @SuppressWarnings("unchecked") public static PanelDTO panel() { PanelDTO pdto = new PanelDTO(); pdto.setFrame(true); pdto.setHorizontal(true); pdto.setSize(120); pdto.setFormatPattern("formated"); TextFieldDTO tfdto = new TextFieldDTO(); tfdto.setProperty(prop()); TextAreaDTO tadto = new TextAreaDTO(); tadto.setEnabled(true); tadto.setSize(12); tadto.setFormatPattern("formated"); tadto.setRows(30); DateFieldDTO df = new DateFieldDTO(); df.setEnabled(true); df.setSize(12); df.setFormatPattern("formated"); pdto.setChildren(Arrays.asList(tfdto, tadto, df)); return pdto; } @SuppressWarnings("unchecked") private MarshallingSession ctx() { MarshallingSession session = EasyMock.createMock(MarshallingSession.class); PrimaryKeyMarshaller pkmarsh = new PrimaryKeyMarshaller(); Object marsh = pkmarsh; EasyMock.expect(session.getMarshallerInstance(PrimaryKey.class.getName())).andReturn((Marshaller<Object>) marsh).anyTimes(); StringMarshaller smarsh = new StringMarshaller(); marsh = smarsh; EasyMock.expect(session.getMarshallerInstance(String.class.getName())).andReturn((Marshaller<Object>) marsh).anyTimes(); QueryDescriptorDTOMarshaller m = new QueryDescriptorDTOMarshaller(); marsh = m; EasyMock.expect(session.getMarshallerInstance(QueryDescriptorDTO.class.getName())).andReturn((Marshaller<Object>) marsh).anyTimes(); SortDescriptorDTOMarshaller sort = new SortDescriptorDTOMarshaller(); marsh = sort; EasyMock.expect(session.getMarshallerInstance(SortDescriptorDTO.class.getName())).andReturn((Marshaller<Object>) marsh).anyTimes(); PropertyDTOMarshaller pmarsh = new PropertyDTOMarshaller(); marsh = pmarsh; EasyMock.expect(session.getMarshallerInstance(PropertyDTO.class.getName())).andReturn((Marshaller<Object>) marsh).anyTimes(); ListItemMarshaller lmarsh = new ListItemMarshaller(); marsh = lmarsh; EasyMock.expect(session.getMarshallerInstance(ListItem.class.getName())).andReturn((Marshaller<Object>) marsh).anyTimes(); FunctionDTOMarshaller fmarshaller = new FunctionDTOMarshaller(); marsh = fmarshaller; EasyMock.expect(session.getMarshallerInstance(FunctionDTO.class.getName())).andReturn((Marshaller<Object>) marsh).anyTimes(); FormDTOMarshaller formmarshaller = new FormDTOMarshaller(); marsh = formmarshaller; EasyMock.expect(session.getMarshallerInstance(FormDTO.class.getName())).andReturn((Marshaller<Object>) marsh).anyTimes(); WidgetDTOMarshaller wmarshaller = new WidgetDTOMarshaller(); EasyMock.replay(session); return session; } }