| /******************************************************************************* |
| * Copyright (c) 2010-present Sonatype, Inc. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Stuart McCulloch (Sonatype, Inc.) - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.sisu.plexus; |
| |
| import java.io.File; |
| import java.util.Arrays; |
| import java.util.Collection; |
| import java.util.Iterator; |
| import java.util.LinkedHashSet; |
| import java.util.List; |
| import java.util.Set; |
| |
| import javax.inject.Inject; |
| import javax.inject.Named; |
| |
| import com.google.inject.AbstractModule; |
| import com.google.inject.Guice; |
| import com.google.inject.name.Names; |
| |
| import junit.framework.TestCase; |
| |
| public class CollectionConstantTest |
| extends TestCase |
| { |
| @Override |
| protected void setUp() |
| throws Exception |
| { |
| Guice.createInjector( new AbstractModule() |
| { |
| private void bind( final String name, final String value ) |
| { |
| bindConstant().annotatedWith( Names.named( name ) ).to( value ); |
| } |
| |
| @Override |
| protected void configure() |
| { |
| bind( "Empty", "<items/>" ); |
| |
| bind( "Custom", "<items implementation='java.util.LinkedHashSet'>" |
| + "<item implementation='java.io.File'>FOO</item><item>BAR</item></items>" ); |
| |
| bind( "Animals", "<animals><animal>cat</animal><animal>dog</animal><animal>aardvark</animal></animals>" ); |
| |
| bind( "Numbers", "<as><a><b>1</b><b>2</b></a><a><b>3</b><b>4</b></a><a><b>5</b><b>6</b></a></as>" ); |
| |
| bind( PlexusBeanConverter.class ).to( PlexusXmlBeanConverter.class ); |
| install( new ConfigurationConverter() ); |
| } |
| } ).injectMembers( this ); |
| } |
| |
| @Inject |
| @Named( "Empty" ) |
| List<?> empty; |
| |
| @Inject |
| @Named( "Custom" ) |
| Set<?> custom; |
| |
| @Inject |
| @Named( "Animals" ) |
| Collection<?> animals; |
| |
| @Inject |
| @Named( "Numbers" ) |
| Collection<Collection<Integer>> numbers; |
| |
| public void testEmptyCollection() |
| { |
| assertTrue( empty.isEmpty() ); |
| } |
| |
| public void testCustomCollections() |
| { |
| assertEquals( LinkedHashSet.class, custom.getClass() ); |
| final Iterator<?> i = custom.iterator(); |
| assertEquals( new File( "FOO" ), i.next() ); |
| assertEquals( "BAR", i.next() ); |
| assertFalse( i.hasNext() ); |
| } |
| |
| public void testStringCollection() |
| { |
| assertEquals( Arrays.asList( "cat", "dog", "aardvark" ), animals ); |
| } |
| |
| @SuppressWarnings( { "unchecked", "boxing" } ) |
| public void testPrimitiveCollection() |
| { |
| assertEquals( Arrays.asList( Arrays.asList( 1, 2 ), Arrays.asList( 3, 4 ), Arrays.asList( 5, 6 ) ), numbers ); |
| } |
| } |