@SuppressWarnings({ "unchecked", "rawtypes" })

@Test
public void testInputWithCustomTypeInfo() {
	TypeInformation<?> customTypeInfo = new TypeInformation<Object>() {
		@Override
		public boolean isBasicType() {
			return true;
		}
		@Override
		public boolean isTupleType() {
			return true;
		}
		@Override
		public int getArity() {
			return 0;
		}
		@Override
		public int getTotalFields() {
			return 0;
		}
		@Override
		public Class getTypeClass() {
			return null;
		}
		@Override
		public boolean isKeyType() {
			return false;
		}
		@Override
		public TypeSerializer<Object> createSerializer(ExecutionConfig config) {
			return null;
		}
		@Override
		public String toString() {
			return null;
		}
		@Override
		public boolean equals(Object obj) {
			return false;
		}
		@Override
		public int hashCode() {
			return 0;
		}
		@Override
		public boolean canEqual(Object obj) {
			return false;
		}
	};
	MapFunction<?, ?> function = new MapFunction<Tuple1<String>, Tuple1<Object>>() {
		@Override
		public Tuple1<Object> map(Tuple1<String> value) throws Exception {
			return null;
		}
	};
	TypeExtractor.getMapReturnTypes(function,
		(TypeInformation) new TupleTypeInfo<Tuple1<Object>>(customTypeInfo));
}