]> source.dussan.org Git - vaadin-framework.git/blob
68e198c37a7cbe878460e7647033e395ebedbb30
[vaadin-framework.git] /
1 package com.vaadin.tests.server.component.abstractfield;
2
3 import java.math.BigDecimal;
4 import java.util.Locale;
5
6 import junit.framework.TestCase;
7
8 import com.vaadin.data.util.MethodProperty;
9 import com.vaadin.server.VaadinSession;
10 import com.vaadin.tests.data.bean.Address;
11 import com.vaadin.tests.data.bean.Country;
12 import com.vaadin.tests.data.bean.Person;
13 import com.vaadin.tests.data.bean.Sex;
14 import com.vaadin.tests.util.AlwaysLockedVaadinSession;
15 import com.vaadin.ui.TextField;
16
17 public class DefaultConverterFactoryTest extends TestCase {
18
19     public static class FloatBean {
20         float f1;
21         Float f2;
22
23         public FloatBean(float f1, Float f2) {
24             this.f1 = f1;
25             this.f2 = f2;
26         }
27
28         public float getF1() {
29             return f1;
30         }
31
32         public void setF1(float f1) {
33             this.f1 = f1;
34         }
35
36         public Float getF2() {
37             return f2;
38         }
39
40         public void setF2(Float f2) {
41             this.f2 = f2;
42         }
43
44     }
45
46     public static class LongBean {
47         long l1;
48         Long l2;
49
50         public LongBean(long l1, Long l2) {
51             this.l1 = l1;
52             this.l2 = l2;
53         }
54
55         public long getL1() {
56             return l1;
57         }
58
59         public void setL1(long l1) {
60             this.l1 = l1;
61         }
62
63         public Long getL2() {
64             return l2;
65         }
66
67         public void setL2(Long l2) {
68             this.l2 = l2;
69         }
70
71     }
72
73     Person paulaBean = new Person("Paula", "Brilliant", "paula@brilliant.com",
74             34, Sex.FEMALE, new Address("Paula street 1", 12345, "P-town",
75                     Country.FINLAND));
76     {
77         paulaBean.setSalary(49000);
78         BigDecimal rent = new BigDecimal(57223);
79         rent = rent.scaleByPowerOfTen(-2);
80         paulaBean.setRent(rent);
81     }
82
83     public void testFloatConversion() {
84         VaadinSession sess = new AlwaysLockedVaadinSession(null);
85         VaadinSession.setCurrent(sess);
86
87         TextField tf = new TextField();
88         tf.setLocale(new Locale("en", "US"));
89         tf.setPropertyDataSource(new MethodProperty<Integer>(new FloatBean(12f,
90                 23f), "f2"));
91         assertEquals("23", tf.getValue());
92         tf.setValue("24");
93         assertEquals("24", tf.getValue());
94         assertEquals(24f, tf.getConvertedValue());
95         assertEquals(24f, tf.getPropertyDataSource().getValue());
96     }
97
98     public void testLongConversion() {
99         VaadinSession sess = new AlwaysLockedVaadinSession(null);
100         VaadinSession.setCurrent(sess);
101
102         TextField tf = new TextField();
103         tf.setLocale(new Locale("en", "US"));
104         tf.setPropertyDataSource(new MethodProperty<Integer>(new LongBean(12,
105                 1982739187238L), "l2"));
106         assertEquals("1,982,739,187,238", tf.getValue());
107         tf.setValue("1982739187239");
108         assertEquals("1,982,739,187,239", tf.getValue());
109         assertEquals(1982739187239L, tf.getConvertedValue());
110         assertEquals(1982739187239L, tf.getPropertyDataSource().getValue());
111     }
112
113     public void testDefaultNumberConversion() {
114         VaadinSession app = new AlwaysLockedVaadinSession(null);
115         VaadinSession.setCurrent(app);
116         TextField tf = new TextField();
117         tf.setLocale(new Locale("en", "US"));
118         tf.setPropertyDataSource(new MethodProperty<Integer>(paulaBean,
119                 "salary"));
120         assertEquals("49,000", tf.getValue());
121
122         tf.setLocale(new Locale("fi", "FI"));
123         // FIXME: The following line should not be necessary and should be
124         // removed
125         tf.setPropertyDataSource(new MethodProperty<Integer>(paulaBean,
126                 "salary"));
127         String value = tf.getValue();
128         // Java uses a non-breaking space (ascii 160) instead of space when
129         // formatting
130         String expected = "49" + (char) 160 + "000";
131         assertEquals(expected, value);
132     }
133 }