/* * Copyright 2000-2016 Vaadin Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.vaadin.v7.tests.data.converter; import java.math.BigDecimal; import java.math.BigInteger; import java.util.Date; import java.util.Locale; import org.junit.Assert; import org.junit.Test; import com.vaadin.v7.data.util.converter.DefaultConverterFactory; public class DefaultConverterFactoryTest { private DefaultConverterFactory factory = new DefaultConverterFactory(); @Test public void stringToBigDecimal() { assertConverter("14", new BigDecimal("14")); } @Test public void stringToBigInteger() { assertConverter("14", new BigInteger("14")); } @Test public void stringToDouble() { assertConverter("14", new Double("14")); } @Test public void stringToFloat() { assertConverter("14", new Float("14")); } @Test public void stringToInteger() { assertConverter("14", new Integer("14")); } @Test public void stringToLong() { assertConverter("14", new Long("14")); } @SuppressWarnings("deprecation") @Test public void stringToDate() { assertConverter("Oct 12, 2014 12:00:00 AM", new Date(2014 - 1900, 10 - 1, 12)); } @Test public void sqlDateToDate() { long l = 1413071210000L; assertConverter(new java.sql.Date(l), new java.util.Date(l)); } @SuppressWarnings("deprecation") @Test public void longToDate() { Date d = new Date(2014 - 1900, 10 - 1, 12); assertConverter( 1413061200000L + (d.getTimezoneOffset() + 180) * 60 * 1000L, d); } public enum Foo { BAR, BAZ; } @Test public void stringToEnum() { assertConverter("Bar", Foo.BAR); } @Test public void stringToShort() { assertConverter("14", new Short("14")); } @Test public void stringToByte() { assertConverter("14", new Byte("14")); } private <T, U> void assertConverter(T t, U u) { Class<T> tClass = (Class<T>) t.getClass(); Class<U> uClass = (Class<U>) u.getClass(); U tConvertedToU = factory.createConverter(tClass, uClass) .convertToModel(t, uClass, Locale.ENGLISH); Assert.assertEquals("Incorrect type of value converted from " + tClass.getSimpleName() + " to " + uClass.getSimpleName(), uClass, tConvertedToU.getClass()); Assert.assertEquals("Incorrect conversion of " + t + " to " + uClass.getSimpleName(), u, tConvertedToU); T uConvertedToT = factory.createConverter(uClass, tClass) .convertToModel(u, tClass, Locale.ENGLISH); Assert.assertEquals("Incorrect type of value converted from " + uClass.getSimpleName() + " to " + tClass.getSimpleName(), tClass, uConvertedToT.getClass()); Assert.assertEquals("Incorrect conversion of " + u + " to " + tClass.getSimpleName(), t, uConvertedToT); } }