首页 > 解决方案 > 为什么运算符 && 不检查两个条件并终止程序测试

问题描述

问题的图片 我正在阅读 CSV 文件,并且我正在尝试测试只有当 Bit=1 时黄色才会出现在红色之后... && 运算符不应该检查这两个条件是否为真吗?为什么它到达黄色时停止运行但位是'1'而不是'0'

////-> Case 4 - Yellow Light can start only when TrafficBit =1 <-\\\\
private void Yellow_Light_Rule(){

    if (trafficLights.isEmpty())
        throw new IllegalArgumentException("Traffic lights list is empty");

    String currentTrafficLightColor = trafficLines.get(0).split(",")[1];
    String currentBitNum = trafficLines.get(0).split(",")[2];

    for (String trafficLine : trafficLines) {
        String[] trafficParts = trafficLine.split(",");
        int cycleNum = Integer.parseInt(trafficParts[0]);
        String trafficLightColor = trafficParts[1];
        String trafficBit = (trafficParts[2]);


        System.out.println("Traffic cycle:" + cycleNum + ", color:" + trafficLightColor + ", bit:" + trafficBit);


        if (currentTrafficLightColor.equals(trafficLightColor))
            continue;
        if (currentTrafficLightColor.equals("Yellow") && currentBitNum.equals("0"))
            break;

        String nextTrafficLight = getNextTrafficLightCase4(currentTrafficLightColor);
        String nextNextBit = getNextBitCase4(currentBitNum);

        Assertions.assertEquals(nextTrafficLight, trafficLightColor, trafficLightColor+" Is a mismatch between expected and actual color");
        Assertions.assertEquals(nextNextBit, trafficBit, trafficBit+" Is a mismatch between expected and actual bit");
        currentTrafficLightColor = trafficLightColor;
        currentBitNum = trafficBit;


    }
}

private int getBitIndexCase4(String trafficBitNum){
    for (int i = 0; i<trafficLines.size(); i++){
        if (trafficLines.get(i).equals(trafficBitNum))
            return i;
    }

    throw new IllegalArgumentException("Bit number '" + trafficBitNum + "' is not correct");
}

private String getNextBitCase4(String trafficBitNum){
    int bitIndex = getBitIndexCase4(trafficBitNum) +1;
    if (bitIndex >= trafficLines.size())
        bitIndex = 0;
    return trafficLines.get(bitIndex);
}

private int getTrafficIndexCase4(String trafficLightName) {
    for (int i = 0; i < trafficLights.size(); i++) {
        if (trafficLights.get(i).equals(trafficLightName))
            return i;
    }

    throw new IllegalArgumentException("Traffic light name '" + trafficLightName + "' is not correct");
}

private String getNextTrafficLightCase4(String trafficLightName) {
    int trafficIndex = getTrafficIndexCase4(trafficLightName) + 1;
    if (trafficIndex >= trafficLights.size())
        trafficIndex = 0;
    return trafficLights.get(trafficIndex);
}

标签: javaautomated-tests

解决方案


推荐阅读