public static void getSemanticPropsDualFromString(
            DualInputSemanticProperties result,
            String[] forwardedFirst,
            String[] forwardedSecond,
            String[] nonForwardedFirst,
            String[] nonForwardedSecond,
            String[] readFieldsFirst,
            String[] readFieldsSecond,
            TypeInformation<?> inType1,
            TypeInformation<?> inType2,
            TypeInformation<?> outType) {
        getSemanticPropsDualFromString(
                result,
                forwardedFirst,
                forwardedSecond,
                nonForwardedFirst,
                nonForwardedSecond,
                readFieldsFirst,
                readFieldsSecond,
                inType1,
                inType2,
                outType,
                false);
    }
@Test
    void testForwardedReadDual() {
        String[] forwardedFieldsFirst = {"f1->f2; f2->f3"};
        String[] forwardedFieldsSecond = {"f1->f1; f2->f0"};
        String[] readFieldsFirst = {"0;2"};
        String[] readFieldsSecond = {"1"};
        DualInputSemanticProperties dsp = new DualInputSemanticProperties();
        SemanticPropUtil.getSemanticPropsDualFromString(
                dsp,
                forwardedFieldsFirst,
                forwardedFieldsSecond,
                null,
                null,
                readFieldsFirst,
                readFieldsSecond,
                fourIntTupleType,
                fourIntTupleType,
                fourIntTupleType);

        assertThat(dsp.getForwardingTargetFields(0, 1)).contains(2);
        assertThat(dsp.getForwardingTargetFields(0, 2)).contains(3);
        assertThat(dsp.getForwardingTargetFields(1, 1)).contains(1);
        assertThat(dsp.getForwardingTargetFields(1, 2)).contains(0);
        assertThat(dsp.getForwardingTargetFields(0, 0)).isEmpty();
        assertThat(dsp.getForwardingTargetFields(1, 3)).isEmpty();
        assertThat(dsp.getReadFields(0)).containsExactly(0, 2);
        assertThat(dsp.getReadFields(1)).containsExactly(1);
    }