blob: 6e000af4101e4a0fdd2378f4f7986ccbb422ea0f [file] [log] [blame]
/*******************************************************************************
* 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 );
}
}