### Question:
HadoopInputFormat extends HadoopInputFormatBase<K, V, Tuple2<K, V>> implements ResultTypeQueryable<Tuple2<K,V>> { @Override public TypeInformation<Tuple2<K,V>> getProducedType() { return new TupleTypeInfo<Tuple2<K,V>>(TypeExtractor.createTypeInfo(keyClass), TypeExtractor.createTypeInfo(valueClass)); } HadoopInputFormat(org.apache.hadoop.mapreduce.InputFormat<K,V> mapreduceInputFormat, Class<K> key, Class<V> value, Job job);  HadoopInputFormat(org.apache.hadoop.mapreduce.InputFormat<K,V> mapreduceInputFormat, Class<K> key, Class<V> value); @Override Tuple2<K, V> nextRecord(Tuple2<K, V> record); @Override TypeInformation<Tuple2<K,V>> getProducedType();  }### Answer:
@Test public void checkTypeInformation() { try { Job job = Job.getInstance(); HadoopInputFormat<Void, Long> hadoopInputFormat = new HadoopInputFormat<Void, Long>( new DummyVoidKeyInputFormat<Long>(), Void.class, Long.class, job); TypeInformation<Tuple2<Void,Long>> tupleType = hadoopInputFormat.getProducedType(); TypeInformation<Tuple2<Void,Long>> testTupleType = new TupleTypeInfo<Tuple2<Void,Long>>(BasicTypeInfo.VOID_TYPE_INFO, BasicTypeInfo.LONG_TYPE_INFO); if(tupleType.isTupleType()) { if(!((TupleTypeInfo<?>)tupleType).equals(testTupleType)) { fail("Tuple type information was not set correctly!"); } } else { fail("Type information was not set to tuple type information!"); } } catch (Exception ex) { fail("Test failed due to a " + ex.getClass().getSimpleName() + ": " + ex.getMessage()); } }