Picture of issue I am reading CSV file and I'm trying to test that yellow color comes after red only when Bit=1... Doesn't && operator suppose to check that both conditions are true? Why does it stops running when it reaches the color Yellow but the Bit is '1' and not '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);
}