public <T0> DataSource<Tuple1<T0>> types(Class<T0> type0) {
        TupleTypeInfo<Tuple1<T0>> types = TupleTypeInfo.getBasicAndBasicValueTupleTypeInfo(type0);
        CsvInputFormat<Tuple1<T0>> inputFormat =
                new TupleCsvInputFormat<Tuple1<T0>>(path, types, this.includedMask);
        configureInputFormat(inputFormat);
        return new DataSource<Tuple1<T0>>(
                executionContext, inputFormat, types, Utils.getCallLocationName());
    }
@Test
    void testWithValueType() {
        CsvReader reader = getCsvReader();
        DataSource<
                        Tuple8<
                                StringValue,
                                BooleanValue,
                                ByteValue,
                                ShortValue,
                                IntValue,
                                LongValue,
                                FloatValue,
                                DoubleValue>>
                items =
                        reader.types(
                                StringValue.class,
                                BooleanValue.class,
                                ByteValue.class,
                                ShortValue.class,
                                IntValue.class,
                                LongValue.class,
                                FloatValue.class,
                                DoubleValue.class);
        TypeInformation<?> info = items.getType();

        assertThat(info.isTupleType()).isTrue();
        assertThat(info.getTypeClass()).isEqualTo(Tuple8.class);
    }