Created
June 21, 2022 05:39
-
-
Save dschinkel/844aaf6bc393a2e26a296fb5fa51d962 to your computer and use it in GitHub Desktop.
TDD a Java Set - Attempt 5
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package set; | |
import java.util.Objects; | |
public class Set { | |
private int size; | |
private final int DEFAULT_SIZE = 10; | |
private String[] elements = new String[DEFAULT_SIZE]; | |
public boolean isEmpty() { | |
return size == 0; | |
} | |
public int size() { | |
return size; | |
} | |
public void add(String value) { | |
elements[size] = value; | |
size++; | |
} | |
public boolean contains(String value) { | |
return indexOf(value) > -1; | |
} | |
private int indexOf(String value) { | |
for (int i = 0; i < size ; i++) { | |
if(Objects.equals(elements[i], value)) { | |
return i; | |
} | |
} | |
return -1; | |
} | |
public void remove(String value) { | |
for (int i = 0; i < size; i++) { | |
if(Objects.equals(elements[i], value)) { | |
elements[i] = elements[size]; | |
size--; | |
} | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package set; | |
import org.junit.jupiter.api.BeforeEach; | |
import org.junit.jupiter.api.Test; | |
import static org.junit.jupiter.api.Assertions.*; | |
public class SetTest { | |
private Set set; | |
@BeforeEach | |
void setUp() { | |
this.set = new Set(); | |
} | |
@Test | |
void is_empty(){ | |
assertTrue(set.isEmpty()); | |
} | |
@Test | |
void empty_set_has_no_size() { | |
assertEquals(0, set.size()); | |
} | |
@Test | |
void adds_one_element_set_not_empty() { | |
set.add("one"); | |
assertFalse(set.isEmpty()); | |
} | |
@Test | |
void adds_one_element_has_size_one() { | |
set.add("one"); | |
assertEquals(1, set.size()); | |
} | |
@Test | |
void adds_one_element_contains_element() { | |
set.add("one"); | |
assertTrue(set.contains("one")); | |
} | |
@Test | |
void adds_one_elements_set_not_empty() { | |
set.add("one"); | |
assertFalse(set.isEmpty()); | |
} | |
@Test | |
void adds_three_elements_set_not_empty() { | |
set.add("one"); | |
set.add("two"); | |
set.add("three"); | |
assertFalse(set.isEmpty()); | |
} | |
@Test | |
void adds_three_elements_has_size_three() { | |
set.add("one"); | |
set.add("two"); | |
set.add("three"); | |
assertEquals(3, set.size()); | |
} | |
@Test | |
void adds_three_elements_contains_three_elements() { | |
set.add("one"); | |
set.add("two"); | |
set.add("three"); | |
assertTrue(set.contains("one")); | |
assertTrue(set.contains("two")); | |
assertTrue(set.contains("three")); | |
} | |
@Test | |
void removes_one_item_set_not_empty() { | |
set.add("one"); | |
set.add("two"); | |
set.add("three"); | |
set.remove("two"); | |
assertFalse(set.isEmpty()); | |
} | |
@Test | |
void removes_one_item_reduces_size() { | |
set.add("one"); | |
set.add("two"); | |
set.add("three"); | |
set.remove("two"); | |
assertEquals(2, set.size()); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment