Tests und Implementierung ArrayList#1
Conversation
|
|
||
| public boolean add(T t) { | ||
| return false; | ||
| Object[] newElements = new Object[++this.length]; |
There was a problem hiding this comment.
Ein kleiner Grundsatzgedanke, den man immer im Hinterkopf behalten sollte: Die interne Datenstruktur weg-abstrahieren.
Es gibt hier eine Funktion für die Länge, nämlich size(). Es macht absolut Sinn, auch intern mit den selben Methoden zu arbeiten. Das macht späteres Refactoring deutlich einfacher!
| return false; | ||
| Iterator<?> iterator = c.iterator(); | ||
| for (int i = 0; i < c.size(); i++) { | ||
| if (this.contains(iterator.next())) { |
There was a problem hiding this comment.
Wenn du mit einem iterator arbeitest, kannst du auch immer while (iterator.hasNext()) machen!
| return false; | ||
| Iterator<?> iterator = c.iterator(); | ||
| for (int i = 0; i < c.size(); i++) { | ||
| this.add((T) iterator.next()); |
There was a problem hiding this comment.
Hier auch. Iterator lässt sich gut mit while() kombinieren!
|
|
||
| public void clear() { | ||
|
|
||
| this.elements = new Object[0]; |
There was a problem hiding this comment.
Es macht evtl. Sinn, hier mit null oder einem private static final EMPTY object zu arbeiten.
|
|
||
| public class MyListImplementation<T> implements MyList<T> { | ||
|
|
||
| private Object[] elements; |
There was a problem hiding this comment.
Object ist natürlich nicht so ideal. Es soll doch ein T sein
|
|
||
| import static org.assertj.core.api.Assertions.assertThat; | ||
|
|
||
| public class MyListImplementationTest { |
There was a problem hiding this comment.
Versuch dich nächstes mal an das pattern with...should für Testnamen zu halten. Das macht es ein bisschen lesbarer, was die Tests aussagen sollen
| MyListImplementation list = new MyListImplementation<Integer>(); | ||
| list.add(1); | ||
| list.add(2); | ||
| assertThat(list.contains(1)).isEqualTo(true); |
There was a problem hiding this comment.
Gerne in 2 Testfälle spalten. Einen Positiv-Test und einen Negativ-Test.
Das wären dann:
withListContainingValue_shouldReturnTrue
withListNotContainingValue_shouldReturnFalse
Grundsätzlich eine "fachlichkeit" pro Testfall!
No description provided.