Home / Class/ DelimitedStringToArrayConverterTests Class — spring-boot Architecture

DelimitedStringToArrayConverterTests Class — spring-boot Architecture

Architecture documentation for the DelimitedStringToArrayConverterTests class in DelimitedStringToArrayConverterTests.java from the spring-boot codebase.

Entity Profile

Source Code

core/spring-boot/src/test/java/org/springframework/boot/convert/DelimitedStringToArrayConverterTests.java lines 39–129

class DelimitedStringToArrayConverterTests {

	@ConversionServiceTest
	void canConvertFromStringToArrayShouldReturnTrue(ConversionService conversionService) {
		assertThat(conversionService.canConvert(String.class, String[].class)).isTrue();
	}

	@ConversionServiceTest
	void matchesWhenTargetIsNotAnnotatedShouldReturnTrue(ConversionService conversionService) {
		TypeDescriptor sourceType = TypeDescriptor.valueOf(String.class);
		Field field = ReflectionUtils.findField(Values.class, "noAnnotation");
		assertThat(field).isNotNull();
		TypeDescriptor targetType = TypeDescriptor.nested(field, 0);
		assertThat(targetType).isNotNull();
		assertThat(new DelimitedStringToArrayConverter(conversionService).matches(sourceType, targetType)).isTrue();
	}

	@ConversionServiceTest
	void matchesWhenHasAnnotationAndNonConvertibleElementTypeShouldReturnFalse(ConversionService conversionService) {
		TypeDescriptor sourceType = TypeDescriptor.valueOf(String.class);
		Field field = ReflectionUtils.findField(Values.class, "nonConvertibleElementType");
		assertThat(field).isNotNull();
		TypeDescriptor targetType = TypeDescriptor.nested(field, 0);
		assertThat(targetType).isNotNull();
		assertThat(new DelimitedStringToArrayConverter(conversionService).matches(sourceType, targetType)).isFalse();
	}

	@ConversionServiceTest
	void convertWhenHasDelimiterOfNoneShouldReturnWholeString(ConversionService conversionService) {
		TypeDescriptor sourceType = TypeDescriptor.valueOf(String.class);
		Field field = ReflectionUtils.findField(Values.class, "delimiterNone");
		assertThat(field).isNotNull();
		TypeDescriptor targetType = TypeDescriptor.nested(field, 0);
		assertThat(targetType).isNotNull();
		String[] converted = (String[]) conversionService.convert("a,b,c", sourceType, targetType);
		assertThat(converted).containsExactly("a,b,c");
	}

	@Test
	void matchesWhenHasAnnotationAndConvertibleElementTypeShouldReturnTrue() {
		TypeDescriptor sourceType = TypeDescriptor.valueOf(String.class);
		Field field = ReflectionUtils.findField(Values.class, "convertibleElementType");
		assertThat(field).isNotNull();
		TypeDescriptor targetType = TypeDescriptor.nested(field, 0);
		assertThat(targetType).isNotNull();
		assertThat(
				new DelimitedStringToArrayConverter(new ApplicationConversionService()).matches(sourceType, targetType))
			.isTrue();
	}

	@Test
	void convertWhenHasConvertibleElementTypeShouldReturnConvertedType() {
		TypeDescriptor sourceType = TypeDescriptor.valueOf(String.class);
		Field field = ReflectionUtils.findField(Values.class, "convertibleElementType");
		assertThat(field).isNotNull();
		TypeDescriptor targetType = TypeDescriptor.nested(field, 0);
		assertThat(targetType).isNotNull();
		Integer[] converted = (Integer[]) new ApplicationConversionService().convert(" 1 |  2| 3  ", sourceType,
				targetType);
		assertThat(converted).containsExactly(1, 2, 3);
	}

	static Stream<? extends Arguments> conversionServices() {
		return ConversionServiceArguments
			.with((service) -> service.addConverter(new DelimitedStringToArrayConverter(service)));
	}

	static class Values {

		@Nullable List<String> noAnnotation;

		@Delimiter("|")
		Integer @Nullable [] convertibleElementType;

		@Delimiter("|")
		NonConvertible @Nullable [] nonConvertibleElementType;

		@Delimiter(Delimiter.NONE)
		String @Nullable [] delimiterNone;

	}

	static class NonConvertible {

	}

	static class MyCustomList<E> extends LinkedList<E> {

	}

}

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free