@Test public void shouldHandleSingleQuotedValue() { // Given ListConverter converter = new ListConverter( String.class, NTString ); String listString = "['foo', 'bar']"; // When DefaultParameterValue converted = converter.apply( listString ); // Then assertThat( converted, equalTo( ntList( asList( "foo", "bar" ), NTString ) ) ); }
private static DefaultValueConverter toList( DefaultValueConverter inner, Type type ) { return new DefaultValueConverter( NTList( inner.type() ), List.class, new ListConverter( type, inner.type() ) ); }
private static DefaultValueConverter toList( DefaultValueConverter inner, Type type ) { return new DefaultValueConverter( NTList( inner.type() ), List.class, new ListConverter( type, inner.type() ) ); }
@Test public void shouldPassOnValidMixedTyoes() { // Given ListConverter converter = new ListConverter( Object.class, NTAny ); String listString = "[1337, 'forty-two']"; // When DefaultParameterValue value = converter.apply( listString ); // Then assertThat( value, equalTo( ntList( asList( 1337L, "forty-two" ), NTAny ) ) ); }
@Test public void shouldHandleDoubleQuotedValue() { // Given ListConverter converter = new ListConverter( String.class, NTString ); String listString = "[\"foo\", \"bar\"]"; // When DefaultParameterValue converted = converter.apply( listString ); // Then assertThat( converted, equalTo( ntList( asList( "foo", "bar" ), NTString ) ) ); }
@Test public void shouldHandleBooleanValues() { // Given ListConverter converter = new ListConverter( Boolean.class, NTBoolean ); String mapString = "[false, true]"; // When DefaultParameterValue converted = converter.apply( mapString ); // Then assertThat( converted, equalTo( ntList( asList( false, true ), NTBoolean ) ) ); }
@Test public void shouldHandleFloatValue() { // Given ListConverter converter = new ListConverter( Double.class, NTFloat ); String listSting = "[2.718281828, 3.14]"; // When DefaultParameterValue converted = converter.apply( listSting ); // Then assertThat( converted, equalTo( ntList( asList( 2.718281828, 3.14 ), NTFloat ) ) ); }
@Test public void shouldHandleNullValue() { // Given ListConverter converter = new ListConverter( Double.class, NTFloat ); String listString = "[null]"; // When DefaultParameterValue converted = converter.apply( listString ); // Then assertThat( converted, equalTo( ntList( singletonList( null ), NTFloat ) ) ); }
@Test public void shouldFailOnInvalidMixedTyoes() { // Given ListConverter converter = new ListConverter( Long.class, NTInteger ); String listString = "[1337, 'forty-two']"; // Expect exception.expect( IllegalArgumentException.class ); exception.expectMessage( "Expects a list of Long but got a list of String" ); // When converter.apply( listString ); }
@Test public void shouldHandleEmptyList() { // Given ListConverter converter = new ListConverter( String.class, NTString ); String listString = "[]"; // When DefaultParameterValue converted = converter.apply( listString ); // Then assertThat( converted, equalTo( ntList( emptyList(), NTString ) ) ); }
@Test public void shouldHandleEmptyListWithSpaces() { // Given ListConverter converter = new ListConverter( String.class, NTString ); String listString = " [ ] "; // When DefaultParameterValue converted = converter.apply( listString ); // Then assertThat( converted, equalTo( ntList( emptyList(), NTString ) ) ); }
@Test public void shouldHandleIntegerValue() { // Given ListConverter converter = new ListConverter( Long.class, NTInteger ); String listString = "[1337, 42]"; // When DefaultParameterValue converted = converter.apply( listString ); // Then assertThat( converted, equalTo( ntList( asList( 1337L, 42L ), NTInteger ) ) ); }
@Test public void shouldHandleNullString() { // Given ListConverter converter = new ListConverter( String.class, NTString ); String listString = "null"; // When DefaultParameterValue converted = converter.apply( listString ); // Then assertThat( converted, equalTo( ntList( null, NTString ) ) ); }
@SuppressWarnings( "unchecked" ) @Test public void shouldHandleNestedLists() { // Given ParameterizedType type = mock( ParameterizedType.class ); when( type.getActualTypeArguments() ).thenReturn( new Type[]{Object.class} ); ListConverter converter = new ListConverter( type, NTList( NTAny ) ); String mapString = "[42, [42, 1337]]"; // When DefaultParameterValue converted = converter.apply( mapString ); // Then List<Object> list = (List<Object>) converted.value(); assertThat( list.get( 0 ), equalTo( 42L ) ); assertThat( list.get( 1 ), equalTo( asList( 42L, 1337L ) ) ); }
@SuppressWarnings( "unchecked" ) @Test public void shouldHandleListsOfMaps() { // Given ListConverter converter = new ListConverter( Map.class, NTMap ); String mapString = "[{k1: 42}, {k1: 1337}]"; // When DefaultParameterValue converted = converter.apply( mapString ); // Then List<Object> list = (List<Object>) converted.value(); assertThat( list.get( 0 ), equalTo( map( "k1", 42L ) ) ); assertThat( list.get( 1 ), equalTo( map( "k1", 1337L ) ) ); } }