123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- package com.vaadin.v7.tests.server.renderer;
-
- import static org.junit.Assert.assertEquals;
- import static org.junit.Assert.assertNull;
- import static org.junit.Assert.assertSame;
-
- import java.util.Date;
- import java.util.Locale;
-
- import org.junit.Before;
- import org.junit.Test;
-
- import com.vaadin.server.VaadinSession;
- import com.vaadin.tests.util.AlwaysLockedVaadinSession;
- import com.vaadin.v7.data.Item;
- import com.vaadin.v7.data.util.IndexedContainer;
- import com.vaadin.v7.data.util.converter.Converter;
- import com.vaadin.v7.data.util.converter.StringToIntegerConverter;
- import com.vaadin.v7.tests.server.component.grid.TestGrid;
- import com.vaadin.v7.ui.Grid;
- import com.vaadin.v7.ui.Grid.AbstractRenderer;
- import com.vaadin.v7.ui.Grid.Column;
- import com.vaadin.v7.ui.renderers.ButtonRenderer;
- import com.vaadin.v7.ui.renderers.DateRenderer;
- import com.vaadin.v7.ui.renderers.HtmlRenderer;
- import com.vaadin.v7.ui.renderers.NumberRenderer;
- import com.vaadin.v7.ui.renderers.TextRenderer;
-
- import elemental.json.JsonValue;
-
- public class RendererTest {
-
- private static class TestBean {
- int i = 42;
-
- @Override
- public String toString() {
- return "TestBean [" + i + "]";
- }
- }
-
- private static class ExtendedBean extends TestBean {
- float f = 3.14f;
- }
-
- private static class TestRenderer extends TextRenderer {
- @Override
- public JsonValue encode(String value) {
- return super.encode("renderer(" + value + ")");
- }
- }
-
- private static class TestConverter implements Converter<String, TestBean> {
-
- @Override
- public TestBean convertToModel(String value,
- Class<? extends TestBean> targetType, Locale locale)
- throws ConversionException {
- return null;
- }
-
- @Override
- public String convertToPresentation(TestBean value,
- Class<? extends String> targetType, Locale locale)
- throws ConversionException {
- if (value instanceof ExtendedBean) {
- return "ExtendedBean(" + value.i + ", "
- + ((ExtendedBean) value).f + ")";
- } else {
- return "TestBean(" + value.i + ")";
- }
- }
-
- @Override
- public Class<TestBean> getModelType() {
- return TestBean.class;
- }
-
- @Override
- public Class<String> getPresentationType() {
- return String.class;
- }
- }
-
- private Grid grid;
-
- private Column intColumn;
- private Column textColumn;
- private Column beanColumn;
- private Column htmlColumn;
- private Column numberColumn;
- private Column dateColumn;
- private Column extendedBeanColumn;
- private Column buttonColumn;
-
- @Before
- @SuppressWarnings("unchecked")
- public void setUp() {
- VaadinSession.setCurrent(new AlwaysLockedVaadinSession(null));
-
- IndexedContainer c = new IndexedContainer();
-
- c.addContainerProperty("int", Integer.class, 0);
- c.addContainerProperty("text", String.class, "");
- c.addContainerProperty("html", String.class, "");
- c.addContainerProperty("number", Number.class, null);
- c.addContainerProperty("date", Date.class, null);
- c.addContainerProperty("bean", TestBean.class, null);
- c.addContainerProperty("button", String.class, null);
- c.addContainerProperty("extendedBean", ExtendedBean.class, null);
-
- Object id = c.addItem();
- Item item = c.getItem(id);
- item.getItemProperty("int").setValue(123);
- item.getItemProperty("text").setValue("321");
- item.getItemProperty("html").setValue("<b>html</b>");
- item.getItemProperty("number").setValue(3.14);
- item.getItemProperty("date").setValue(new Date(123456789));
- item.getItemProperty("bean").setValue(new TestBean());
- item.getItemProperty("extendedBean").setValue(new ExtendedBean());
-
- grid = new TestGrid(c);
-
- intColumn = grid.getColumn("int");
- textColumn = grid.getColumn("text");
- htmlColumn = grid.getColumn("html");
- numberColumn = grid.getColumn("number");
- dateColumn = grid.getColumn("date");
- beanColumn = grid.getColumn("bean");
- extendedBeanColumn = grid.getColumn("extendedBean");
- buttonColumn = grid.getColumn("button");
-
- }
-
- @Test
- public void testDefaultRendererAndConverter() throws Exception {
- assertSame(TextRenderer.class, intColumn.getRenderer().getClass());
- assertSame(StringToIntegerConverter.class,
- intColumn.getConverter().getClass());
-
- assertSame(TextRenderer.class, textColumn.getRenderer().getClass());
- // String->String; converter not needed
- assertNull(textColumn.getConverter());
-
- assertSame(TextRenderer.class, beanColumn.getRenderer().getClass());
- // MyBean->String; converter not found
- assertNull(beanColumn.getConverter());
- }
-
- @Test
- public void testFindCompatibleConverter() throws Exception {
- intColumn.setRenderer(renderer());
- assertSame(StringToIntegerConverter.class,
- intColumn.getConverter().getClass());
-
- textColumn.setRenderer(renderer());
- assertNull(textColumn.getConverter());
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testCannotFindConverter() {
- beanColumn.setRenderer(renderer());
- }
-
- @Test
- public void testExplicitConverter() throws Exception {
- beanColumn.setRenderer(renderer(), converter());
- extendedBeanColumn.setRenderer(renderer(), converter());
- }
-
- @Test
- public void testEncoding() throws Exception {
- assertEquals("42", render(intColumn, 42).asString());
- intColumn.setRenderer(renderer());
- assertEquals("renderer(42)", render(intColumn, 42).asString());
-
- assertEquals("2.72", render(textColumn, "2.72").asString());
- textColumn.setRenderer(new TestRenderer());
- assertEquals("renderer(2.72)", render(textColumn, "2.72").asString());
- }
-
- @Test
- public void testEncodingWithoutConverter() throws Exception {
- assertEquals("TestBean [42]",
- render(beanColumn, new TestBean()).asString());
- }
-
- @Test
- public void testBeanEncoding() throws Exception {
- beanColumn.setRenderer(renderer(), converter());
- extendedBeanColumn.setRenderer(renderer(), converter());
-
- assertEquals("renderer(TestBean(42))",
- render(beanColumn, new TestBean()).asString());
- assertEquals("renderer(ExtendedBean(42, 3.14))",
- render(beanColumn, new ExtendedBean()).asString());
-
- assertEquals("renderer(ExtendedBean(42, 3.14))",
- render(extendedBeanColumn, new ExtendedBean()).asString());
- }
-
- @Test
- public void testNullEncoding() {
-
- textColumn.setRenderer(new TextRenderer());
- htmlColumn.setRenderer(new HtmlRenderer());
- numberColumn.setRenderer(new NumberRenderer());
- dateColumn.setRenderer(new DateRenderer());
- buttonColumn.setRenderer(new ButtonRenderer());
-
- assertEquals("", textColumn.getRenderer().encode(null).asString());
- assertEquals("", htmlColumn.getRenderer().encode(null).asString());
- assertEquals("", numberColumn.getRenderer().encode(null).asString());
- assertEquals("", dateColumn.getRenderer().encode(null).asString());
- assertEquals("", buttonColumn.getRenderer().encode(null).asString());
- }
-
- @Test
- public void testNullEncodingWithDefault() {
-
- textColumn.setRenderer(new TextRenderer("default value"));
- htmlColumn.setRenderer(new HtmlRenderer("default value"));
- numberColumn.setRenderer(
- new NumberRenderer("%s", Locale.getDefault(), "default value"));
- dateColumn.setRenderer(new DateRenderer("%s", "default value"));
- buttonColumn.setRenderer(new ButtonRenderer("default value"));
-
- assertEquals("default value",
- textColumn.getRenderer().encode(null).asString());
- assertEquals("default value",
- htmlColumn.getRenderer().encode(null).asString());
- assertEquals("default value",
- numberColumn.getRenderer().encode(null).asString());
- assertEquals("default value",
- dateColumn.getRenderer().encode(null).asString());
- assertEquals("default value",
- buttonColumn.getRenderer().encode(null).asString());
- }
-
- private TestConverter converter() {
- return new TestConverter();
- }
-
- private TestRenderer renderer() {
- return new TestRenderer();
- }
-
- private JsonValue render(Column column, Object value) {
- return AbstractRenderer.encodeValue(value, column.getRenderer(),
- column.getConverter(), grid.getLocale());
- }
- }
|