/*
* Copyright 2012 Jason Miller
*
* 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 jj.conversion;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.nullValue;
import static org.junit.Assert.*;
import java.nio.file.Path;
import java.nio.file.Paths;
import jj.JJ;
import org.junit.Before;
import org.junit.Test;
/**
* @author jason
*
*/
public class ConvertersTest {
Converters converters;
@Before
public void before() {
converters = new Converters(ConverterSetMaker.converters());
}
@Test
public void testAssertions() {
boolean threw = false;
try {
converters.convert("", getClass());
} catch (AssertionError ae) {
threw = true;
}
assertTrue("should have thrown", threw);
}
@Test
public void testIdentity() {
assertThat(converters.convert((Object)this, Object.class), is((Object)this));
assertThat(converters.convert(this, ConvertersTest.class), is(this));
assertThat(converters.convert("", String.class), is(""));
assertThat(converters.convert(true, Boolean.TYPE), is(true));
assertThat(converters.convert(false, Boolean.TYPE), is(false));
assertThat(converters.convert(true, Boolean.class), is(true));
assertThat(converters.convert(false, Boolean.class), is(false));
assertThat(converters.convert('a', Character.class), is('a'));
assertThat(converters.convert('a', Character.TYPE), is('a'));
assertThat(converters.convert((byte)1, Byte.class), is((byte)1));
assertThat(converters.convert((byte)1, Byte.TYPE), is((byte)1));
assertThat(converters.convert((short)1, Short.class), is((short)1));
assertThat(converters.convert((short)1, Short.TYPE), is((short)1));
assertThat(converters.convert(1, Integer.class), is(1));
assertThat(converters.convert(1, Integer.TYPE), is(1));
assertThat(converters.convert(1L, Long.class), is(1L));
assertThat(converters.convert(1L, Long.TYPE), is(1L));
assertThat(converters.convert(1.0f, Float.class), is(1.0f));
assertThat(converters.convert(1.0f, Float.TYPE), is(1.0f));
assertThat(converters.convert(1.0, Double.class), is(1.0));
assertThat(converters.convert(1.0, Double.TYPE), is(1.0));
}
@Test
public void testConvertToString() {
assertThat(converters.convert(1.0, String.class), is("1.0"));
assertThat(converters.convert(true, String.class), is("true"));
}
@Test
public void testFromStringToPath() {
Path testPath = Paths.get(JJ.uri(ConvertersTest.class));
Path path = converters.convert(testPath.toString(), Path.class);
assertThat(path, is(testPath));
}
@Test
public void testFromStringToBoolean() {
assertTrue(converters.convert("true", Boolean.class));
assertFalse(converters.convert("false", Boolean.class));
assertFalse(converters.convert("", Boolean.class));
assertTrue(converters.convert("true", Boolean.TYPE));
assertFalse(converters.convert("false", Boolean.TYPE));
assertFalse(converters.convert("", Boolean.TYPE));
}
@Test
public void testFromStringToChar() {
assertThat(converters.convert("a", char.class), is('a'));
assertThat(converters.convert("a", Character.class), is('a'));
assertThat(converters.convert("", char.class), is((char)0));
assertThat(converters.convert("", Character.class), is(nullValue()));
assertThat(converters.convert("too long", char.class), is((char)0));
assertThat(converters.convert("too long", Character.class), is(nullValue()));
}
@Test
public void testFromStringToByte() {
assertThat(converters.convert("1", byte.class), is((byte)1));
assertThat(converters.convert("1", Byte.class), is((byte)1));
assertThat(converters.convert("nope", byte.class), is((byte)0));
assertThat(converters.convert("nope", Byte.class), is(nullValue()));
}
@Test
public void testFromStringToShort() {
assertThat(converters.convert("1", short.class), is((short)1));
assertThat(converters.convert("1", Short.class), is((short)1));
assertThat(converters.convert("nope", short.class), is((short)0));
assertThat(converters.convert("nope", Short.class), is(nullValue()));
}
@Test
public void testFromStringToInteger() {
assertThat(converters.convert("1", int.class), is(1));
assertThat(converters.convert("1", Integer.class), is(1));
assertThat(converters.convert("nope", int.class), is(0));
assertThat(converters.convert("nope", Integer.class), is(nullValue()));
}
@Test
public void testFromStringToLong() {
long now = System.currentTimeMillis();
assertThat(converters.convert(String.valueOf(now), long.class), is(now));
assertThat(converters.convert(String.valueOf(now), Long.class), is(now));
assertThat(converters.convert("nope", long.class), is(0L));
assertThat(converters.convert("nope", Long.class), is(nullValue()));
}
@Test
public void testFromStringToFloat() {
float f = 1.23f;
assertThat(converters.convert(String.valueOf(f), float.class), is(f));
assertThat(converters.convert(String.valueOf(f), Float.class), is(f));
assertThat(converters.convert("nope", float.class), is(0.0F));
assertThat(converters.convert("nope", Float.class), is(nullValue()));
}
@Test
public void testFromStringToDouble() {
double d = 1.23;
assertThat(converters.convert(String.valueOf(d), double.class), is(d));
assertThat(converters.convert(String.valueOf(d), Double.class), is(d));
assertThat(converters.convert("nope", double.class), is(0.0));
assertThat(converters.convert("nope", Double.class), is(nullValue()));
}
enum ConverterEnums {
One,
Two,
Ready,
Steady,
What;
}
enum MoreEnums {
Value,
OtherValue,
AndAnother;
}
@Test
public void testEnums() {
assertThat(converters.convert("One", ConverterEnums.class), is(ConverterEnums.One));
assertThat(converters.convert("Two", ConverterEnums.class), is(ConverterEnums.Two));
assertThat(converters.convert("Ready", ConverterEnums.class), is(ConverterEnums.Ready));
assertThat(converters.convert("Steady", ConverterEnums.class), is(ConverterEnums.Steady));
assertThat(converters.convert("What", ConverterEnums.class), is(ConverterEnums.What));
assertThat(converters.convert("Nope", ConverterEnums.class), is(nullValue()));
assertThat(converters.convert("Value", MoreEnums.class), is(MoreEnums.Value));
assertThat(converters.convert("OtherValue", MoreEnums.class), is(MoreEnums.OtherValue));
assertThat(converters.convert("AndAnother", MoreEnums.class), is(MoreEnums.AndAnother));
assertThat(converters.convert("Nope", MoreEnums.class), is(nullValue()));
}
}