### Question:
TypeConverterFactoryLoader { public Set<TypeConverterFactory<?, ?>> load() { final Iterator<TypeConverterFactory> typeConverterFactoryIterator = ServiceLoader.load(TypeConverterFactory.class).iterator(); final Set<TypeConverterFactory<?, ?>> typeConverterFactories = new HashSet<>(); while (typeConverterFactoryIterator.hasNext()) { final TypeConverterFactory<?, ?> typeConverterFactory = typeConverterFactoryIterator.next(); assertTypeConverterFactoryInterface(typeConverterFactory); final Type sourceType = ((ParameterizedType) typeConverterFactory.getClass().getGenericInterfaces()[0]).getActualTypeArguments()[0]; final Type targetType = ((ParameterizedType) typeConverterFactory.getClass().getGenericInterfaces()[0]).getActualTypeArguments()[1]; final TypeConverterDescriptor<?, ?> typeConverterDescriptor; if (typeConverterFactories.contains(typeConverterFactory.getTypeConverterDescriptor())) { LOGGER.warn("More than one TypeConverter for type '" + targetType.getTypeName() + "' is installed on the classpath. You must manually configure decoding of this type, where required."); typeConverterFactories.add(null); } else { typeConverterFactories.add(typeConverterFactory); } } return typeConverterFactories; }  Set<TypeConverterFactory<?, ?>> load();  }### Answer:
@Test public void testLoad() { assertTrue(get(new TypeConverterDescriptor<>(String.class, String.class)) instanceof StringConverterFactory); assertTrue(get(new TypeConverterDescriptor<>(String.class, Integer.class)) instanceof StringToIntegerConverterFactory); assertTrue(get(new TypeConverterDescriptor<>(Integer.class, String.class)) instanceof IntegerToStringConverterFactory); assertTrue(get(new TypeConverterDescriptor<>(String.class, Float.class)) instanceof StringToFloatConverterFactory); assertTrue(get(new TypeConverterDescriptor<>(Float.class, String.class)) instanceof FloatToStringConverterFactory); assertTrue(get(new TypeConverterDescriptor<>(String.class, Double.class)) instanceof StringToDoubleConverterFactory); assertTrue(get(new TypeConverterDescriptor<>(Double.class, String.class)) instanceof DoubleToStringConverterFactory); assertTrue(get(new TypeConverterDescriptor<>(String.class, Character.class)) instanceof CharacterConverterFactory); assertTrue(get(new TypeConverterDescriptor<>(String.class, BigDecimal.class)) instanceof StringToBigDecimalConverterFactory); assertTrue(get(new TypeConverterDescriptor<>(BigDecimal.class, String.class)) instanceof BigDecimalToStringConverterFactory); assertTrue(get(new TypeConverterDescriptor<>(String.class, Date.class)) instanceof StringToDateConverterFactory); assertTrue(get(new TypeConverterDescriptor<>(Date.class, String.class)) instanceof DateToStringConverterFactory); assertTrue(get(new TypeConverterDescriptor<>(String.class, Calendar.class)) instanceof CalendarConverterFactory); assertTrue(get(new TypeConverterDescriptor<>(String.class, String[].class)) instanceof CsvConverterFactory); assertTrue(get(new TypeConverterDescriptor<>(String.class, Charset.class)) instanceof CharsetConverterFactory); assertTrue(get(new TypeConverterDescriptor<>(String.class, File.class)) instanceof FileConverterFactory); assertTrue(get(new TypeConverterDescriptor<>(String.class, Class.class)) instanceof ClassConverterFactory); }