Skip to content

Instantly share code, notes, and snippets.

@dschinkel
Created June 21, 2022 05:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dschinkel/844aaf6bc393a2e26a296fb5fa51d962 to your computer and use it in GitHub Desktop.
Save dschinkel/844aaf6bc393a2e26a296fb5fa51d962 to your computer and use it in GitHub Desktop.
TDD a Java Set - Attempt 5
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--;
}
}
}
}
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