/* * Copyright (c) 2011-2013 The original author or authors * ------------------------------------------------------ * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * and Apache License v2.0 which accompanies this distribution. * * The Eclipse Public License is available at * http://www.eclipse.org/legal/epl-v10.html * * The Apache License v2.0 is available at * http://www.opensource.org/licenses/apache2.0.php * * You may elect to redistribute this code under either of these licenses. */ package io.vertx.core.cli.converters; import org.junit.Test; import java.io.File; import java.net.URL; import java.util.NoSuchElementException; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.fail; public class ConvertersTest { @Test public void testCreatingSingleValueUsingValueOfOnEnumeration() { assertThat(Converters.create(HttpMethod.class, "GET")).isEqualTo(HttpMethod.GET); try { assertThat(Converters.create(HttpMethod.class, null)).isNull(); fail("Exception expected"); } catch (IllegalArgumentException e) { // OK. } // Invalid value try { assertThat(Converters.create(HttpMethod.class, "FOO_IS_NOT_A_METHOD")).isNull(); fail("Exception expected"); } catch (IllegalArgumentException e) { // OK. } } @Test public void testWithString() throws NoSuchMethodException { assertThat(Converters.create(String.class, "Hello")).isEqualTo("Hello"); assertThat(Converters.create(String.class, "")).isEqualTo(""); } @Test public void testWithPrimitives() throws NoSuchMethodException { assertThat(Converters.create(Integer.class, "1")).isEqualTo(1); assertThat(Converters.create(Integer.TYPE, "1")).isEqualTo(1); assertThat(Converters.create(Long.class, "2")).isEqualTo(2l); assertThat(Converters.create(Long.TYPE, "2")).isEqualTo(2l); assertThat(Converters.create(Short.class, "3")).isEqualTo((short) 3); assertThat(Converters.create(Short.TYPE, "3")).isEqualTo((short) 3); assertThat(Converters.create(Byte.class, "4")).isEqualTo((byte) 4); assertThat(Converters.create(Byte.TYPE, "4")).isEqualTo((byte) 4); assertThat(Converters.create(Float.class, "5.5")).isEqualTo(5.5f); assertThat(Converters.create(Float.TYPE, "5.5")).isEqualTo(5.5f); assertThat(Converters.create(Double.class, "5.5")).isEqualTo(5.5d); assertThat(Converters.create(Double.TYPE, "5.5")).isEqualTo(5.5d); assertThat(Converters.create(Character.class, "a")).isEqualTo('a'); assertThat(Converters.create(Character.TYPE, "a")).isEqualTo('a'); assertThat(Converters.create(Boolean.class, "true")).isTrue(); assertThat(Converters.create(Boolean.TYPE, "on")).isTrue(); assertThat(Converters.create(Boolean.class, "")).isFalse(); } @Test public void testUsingFrom() throws NoSuchMethodException { assertThat(Converters.create(Person2.class, "vertx").name).isEqualTo("vertx"); } @Test public void testUsingFromString() throws NoSuchMethodException { assertThat(Converters.create(Person3.class, "vertx").name).isEqualTo("vertx"); } @Test(expected = NoSuchElementException.class) public void testMissingConvertion() throws NoSuchMethodException { Converters.create(Object.class, "hello"); } @Test public void testWithURL() { final URL url = Converters.create(URL.class, "http://vertx.io"); assertThat(url.toExternalForm()).isEqualToIgnoringCase("http://vertx.io"); } @Test public void testWithFile() { final File file = Converters.create(File.class, "foo/hello.txt"); assertThat(file).hasName("hello.txt") .doesNotExist(); } private enum HttpMethod { GET } }