Reputation: 5859
I am incorrectly looping through a list of FreeEvent Objects, which consist of a String and a corresponding Enum.
private List<FreeEvent> freeEvents = new ArrayList<FreeEvent>();
My JUnit test gives out the following error, which is self-explanatory:
org.junit.ComparisonFailure: expected: Halloween Evening[1: FREE Halloween Evening2: FREE Halloween Evening3: FREE ] but was:Halloween Evening[3: FREE]
I understand what the error is, but I am not sure how to fix the loop to make it remember all the values it looped through.
public String displayFreeEvents() {
String name = null;
EventType type = null;
for (int i = 0; i < freeEvents.size(); i++) {
name = freeEvents.get(i).getEventName();
type = freeEvents.get(i).getEventType();
}
String event = name + ": " + type;
return event;
}
Test Case
public void testDisplayFreeEvents() {
EventHistory eventHistory = new EventHistory();
FreeEvent event1 = new FreeEvent("Halloween Evening1",EventType.FREE);
FreeEvent event2 = new FreeEvent("Halloween Evening2",EventType.FREE);
FreeEvent event3 = new FreeEvent("Halloween Evening3",EventType.FREE);
eventHistory.addFreeEvent(event1);
eventHistory.addFreeEvent(event2);
eventHistory.addFreeEvent(event3);
assertEquals("Halloween Evening1: FREE"+"\n"+"Halloween Evening2: FREE"+"\n"+"Halloween Evening3: FREE"+"\n",eventHistory.displayFreeEvents());
}
Upvotes: 0
Views: 60
Reputation: 1285
You have to use the StringBuilder class in order to build your string through the iteration.
So , your method should look like this :
public String displayFreeEvents() {
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < freeEvents.size(); i++) {
String name = "", type = "";
name = freeEvents.get(i).getEventName();
type = freeEvents.get(i).getEventType();
stringBuilder.append(name+ " " + type); // you can add also the \n character if you wish
}
return stringBuilder.toString();
}
Upvotes: 1