/* * Copyright (c) 2001-2007, Inversoft Inc., All Rights Reserved * * 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 org.primeframework.mvc.parameter.convert; import java.util.Map; import org.primeframework.mvc.PrimeBaseTest; import org.primeframework.mvc.guice.GuiceBootstrap; import org.primeframework.mvc.guice.MVCModule; import org.primeframework.mvc.parameter.convert.converters.BooleanConverter; import org.primeframework.mvc.parameter.convert.converters.CharacterConverter; import org.primeframework.mvc.parameter.convert.converters.NumberConverter; import org.primeframework.mvc.parameter.convert.converters.StringConverter; import org.testng.annotations.Test; import com.google.inject.Injector; import com.google.inject.Key; import com.google.inject.TypeLiteral; import static org.testng.Assert.*; /** * This class tests the converter registry. * * @author Brian Pontarelli */ public class DefaultConverterProviderTest extends PrimeBaseTest { /** * Test the lookup of converters. */ @Test public void lookups() { Injector injector = GuiceBootstrap.initialize(new MVCModule() { @Override protected void configure() { super.configure(); install(new TestModule()); } }); ConverterProvider provider = new DefaultConverterProvider(injector, injector.getInstance(Key.get(new TypeLiteral<Map<Class<?>, GlobalConverter>>(){}))); GlobalConverter tc = provider.lookup(Character.class); assertSame(CharacterConverter.class, tc.getClass()); tc = provider.lookup(Character.TYPE); assertSame(CharacterConverter.class, tc.getClass()); tc = provider.lookup(Character[].class); assertSame(CharacterConverter.class, tc.getClass()); tc = provider.lookup(char[].class); assertSame(CharacterConverter.class, tc.getClass()); tc = provider.lookup(Byte.class); assertSame(NumberConverter.class, tc.getClass()); tc = provider.lookup(Byte.TYPE); assertSame(NumberConverter.class, tc.getClass()); tc = provider.lookup(Byte[].class); assertSame(NumberConverter.class, tc.getClass()); tc = provider.lookup(byte[].class); assertSame(NumberConverter.class, tc.getClass()); tc = provider.lookup(Short.class); assertSame(NumberConverter.class, tc.getClass()); tc = provider.lookup(Short.TYPE); assertSame(NumberConverter.class, tc.getClass()); tc = provider.lookup(Short[].class); assertSame(NumberConverter.class, tc.getClass()); tc = provider.lookup(short[].class); assertSame(NumberConverter.class, tc.getClass()); tc = provider.lookup(Integer.class); assertSame(NumberConverter.class, tc.getClass()); tc = provider.lookup(Integer.TYPE); assertSame(NumberConverter.class, tc.getClass()); tc = provider.lookup(Integer[].class); assertSame(NumberConverter.class, tc.getClass()); tc = provider.lookup(int[].class); assertSame(NumberConverter.class, tc.getClass()); tc = provider.lookup(Long.class); assertSame(NumberConverter.class, tc.getClass()); tc = provider.lookup(Long.TYPE); assertSame(NumberConverter.class, tc.getClass()); tc = provider.lookup(Long[].class); assertSame(NumberConverter.class, tc.getClass()); tc = provider.lookup(long[].class); assertSame(NumberConverter.class, tc.getClass()); tc = provider.lookup(Float.class); assertSame(NumberConverter.class, tc.getClass()); tc = provider.lookup(Float.TYPE); assertSame(NumberConverter.class, tc.getClass()); tc = provider.lookup(Float[].class); assertSame(NumberConverter.class, tc.getClass()); tc = provider.lookup(float[].class); assertSame(NumberConverter.class, tc.getClass()); tc = provider.lookup(Double.class); assertSame(NumberConverter.class, tc.getClass()); tc = provider.lookup(Double.TYPE); assertSame(NumberConverter.class, tc.getClass()); tc = provider.lookup(Double[].class); assertSame(NumberConverter.class, tc.getClass()); tc = provider.lookup(double[].class); assertSame(NumberConverter.class, tc.getClass()); tc = provider.lookup(Boolean.class); assertSame(BooleanConverter.class, tc.getClass()); tc = provider.lookup(Boolean.TYPE); assertSame(BooleanConverter.class, tc.getClass()); tc = provider.lookup(Boolean[].class); assertSame(BooleanConverter.class, tc.getClass()); tc = provider.lookup(boolean[].class); assertSame(BooleanConverter.class, tc.getClass()); tc = provider.lookup(String.class); assertSame(StringConverter.class, tc.getClass()); tc = provider.lookup(String[].class); assertSame(StringConverter.class, tc.getClass()); // Failure tc = provider.lookup(this.getClass()); assertNull(tc); } }