Browse Source

initial project commit

vollständige_und_weitere_testate
hertero 3 years ago
committed by chris
parent
commit
ffbbbdee49
  1. 7
      SimpleArrayMap/.classpath
  2. 17
      SimpleArrayMap/.project
  3. 107
      SimpleArrayMap/src/solution/SimpleArrayMap.java
  4. 13
      SimpleArrayMap/src/solution/SimpleArrayMapTest.java
  5. 242
      SimpleArrayMap/src/testat/ASimpleMapTest.java
  6. 33
      SimpleArrayMap/src/testat/ISimpleMap.java

7
SimpleArrayMap/.classpath

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5"/>
<classpathentry kind="output" path="bin"/>
</classpath>

17
SimpleArrayMap/.project

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>SimpleArrayMap</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

107
SimpleArrayMap/src/solution/SimpleArrayMap.java

@ -0,0 +1,107 @@
package solution;
import java.util.function.Consumer;
import testat.ISimpleMap;
public class SimpleArrayMap<K, V> implements ISimpleMap<K, V> {
private int size;
private K[] keys;
private V[] values;
public SimpleArrayMap(int maxSize) {
size = 0;
keys = (K[]) new Object[maxSize];
values = (V[]) new Object[maxSize];
}
@Override
public V put(K k, V v) {
if (k == null || v == null) {
return null;
}
for (int i = 0; i < values.length; i++) {
if (k.equals(keys[i])) { // found
V result = values[i];
values[i] = v;
return result;
}
}
for (int i = 0; i < values.length; i++) {
if (keys[i] == null) { // empty
keys[i] = k;
values[i] = v;
size++;
return null;
}
}
return null;
}
@Override
public V get(K k) {
if (k == null) {
return null;
}
for (int i = 0; i < values.length; i++) {
if (k.equals(keys[i])) { // found
return values[i];
}
}
return null;
}
@Override
public V remove(K k) {
if (k == null) {
return null;
}
for (int i = 0; i < values.length; i++) {
if (k.equals(keys[i])) { // found
V v = values[i];
size--;
keys[i] = null;
values[i] = null;
return v;
}
}
return null;
}
@Override
public boolean contains(V v) {
if (v == null) {
return false;
}
int counter = 0;
for (int i = 0; i < values.length; i++) {
if (v.equals(values[i])) {
return true;
}
if (values[i] != null) {
counter++;
}
if (counter == size) {
return false;
}
}
return false;
}
@Override
public void forEach(Consumer<? super V> consumer) {
for (int i = 0; i < values.length; i++) {
if (keys[i] != null) { // found
consumer.accept(values[i]);
}
}
}
@Override
public int size() {
return size;
}
}

13
SimpleArrayMap/src/solution/SimpleArrayMapTest.java

@ -0,0 +1,13 @@
package solution;
import testat.ASimpleMapTest;
import testat.ISimpleMap;
public class SimpleArrayMapTest extends ASimpleMapTest {
@Override
protected ISimpleMap<String, String> getInstance() {
return new SimpleArrayMap<>(5);
}
}

242
SimpleArrayMap/src/testat/ASimpleMapTest.java

@ -0,0 +1,242 @@
package testat;
import static org.junit.Assert.assertEquals;
import java.util.function.Consumer;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
public abstract class ASimpleMapTest {
ISimpleMap<String, String> map;
protected abstract ISimpleMap<String, String> getInstance();
private int counter = 0;
private String result;
Consumer<String> action = s -> {
counter++;
result = result + s;
};
@BeforeAll
static void setUpBeforeClass() throws Exception {
}
@BeforeEach
void setUp() throws Exception {
map = getInstance();
}
@Test
void testadd1() {
String actual = map.put("1", "Hallo");
assertEquals(null, actual);
}
@Test
void testadd2a() {
String actual = map.put(null, "xxx");
assertEquals(null, actual);
}
@Test
void testadd2b() {
String actual = map.put("1", null);
assertEquals(null, actual);
}
@Test
void testadd3() {
add3();
String actual = map.put("1", "Hallo");
assertEquals("Eins", actual);
}
@Test
void testadd4() {
add3();
map.put("4", "Vier");
map.put("5", "Fünf");
map.remove("3");
map.put("6", "Sechs");
String actual = map.get("1");
assertEquals("Eins", actual);
actual = map.get("2");
assertEquals("Zwei", actual);
actual = map.get("4");
assertEquals("Vier", actual);
actual = map.get("5");
assertEquals("Fünf", actual);
actual = map.get("6");
assertEquals("Sechs", actual);
}
@Test
void testget1() {
String actual = map.get(null);
assertEquals(null, actual);
}
@Test
void testget2() {
String actual = map.get("1");
assertEquals(null, actual);
}
@Test
void testget3() {
add3();
String actual = map.get("1");
assertEquals("Eins", actual);
actual = map.get("2");
assertEquals("Zwei", actual);
actual = map.get("3");
assertEquals("Drei", actual);
}
@Test
void testremove1() {
String actual = map.remove(null);
assertEquals(null, actual);
}
@Test
void testremove2() {
String actual = map.remove("1");
assertEquals(null, actual);
}
@Test
void testremove3() {
add3();
String actual = map.remove(null);
assertEquals(null, actual);
}
@Test
void testremove4() {
add3();
String actual = map.remove("9");
assertEquals(null, actual);
}
@Test
void testremove5() {
add3();
String actual = map.remove("1");
assertEquals("Eins", actual);
actual = map.get("1");
assertEquals(null, actual);
actual = map.remove("2");
assertEquals("Zwei", actual);
actual = map.get("2");
assertEquals(null, actual);
actual = map.remove("3");
assertEquals("Drei", actual);
actual = map.get("3");
assertEquals(null, actual);
}
@Test
void testcontains1() {
Boolean actual = map.contains(null);
assertEquals(false, actual);
}
@Test
void testcontains2() {
Boolean actual = map.contains("1");
assertEquals(false, actual);
}
@Test
void testcontains3() {
add3();
Boolean actual = map.contains("Eins");
assertEquals(true, actual);
actual = map.contains("Zwei");
assertEquals(true, actual);
actual = map.contains("Drei");
assertEquals(true, actual);
actual = map.contains("xxx");
assertEquals(false, actual);
}
@Test
void testsize1() {
int actual = map.size();
assertEquals(0, actual);
}
@Test
void testsize2() {
add3();
int actual = map.size();
assertEquals(3, actual);
}
@Test
void testAddSize1() {
add3();
add3();
int actual = map.size();
assertEquals(3, actual);
}
@Test
void testRemoveSize1() {
add3();
map.remove("2");
int actual = map.size();
assertEquals(2, actual);
}
@Test
void testRemoveContains1() {
add3();
map.remove("2");
Boolean actual = map.contains("Eins");
assertEquals(true, actual);
actual = map.contains("Zwei");
assertEquals(false, actual);
actual = map.contains("Drei");
assertEquals(true, actual);
actual = map.contains("xxx");
assertEquals(false, actual);
}
@Test
void testForAll1() {
map.forEach(null);
assertEquals(true, true);
}
@Test
void testForAll2() {
map.forEach(action);
assertEquals(true, true);
}
@Test
void testForAll3() {
add3();
counter = 0;
result = new String("");
map.forEach(action);
assertEquals(3, counter);
assertEquals(true, result.contains("Eins"));
assertEquals(true, result.contains("Zwei"));
assertEquals(true, result.contains("Drei"));
}
protected void add3() {
map.put("1", "Eins");
map.put("2", "Zwei");
map.put("3", "Drei");
}
}

33
SimpleArrayMap/src/testat/ISimpleMap.java

@ -0,0 +1,33 @@
package testat;
import java.util.function.Consumer;
public interface ISimpleMap<K, V> {
// speichert zu den Schlüssel k den Wert v, sofern beide nicht null sind (in
// diesem Fall wird null zurück gegeben) .
// Falls zu k bereits ein Wert w vorhanden ist, wird dieser durch v ersetzt. Der
// alte
// Wert w wird zurückgegebn. Falls zu k noch kein Wert gespeichert war, wird
// null zurückgegeben
V put(K k, V v);
// Liefert den zum Schlüssel k gespeicherten Wert. Liefert null, falls k ==
// null oder falls zu k kein Wert gespeichert war
V get(K k);
// Entfernt den zum Schlüssel k gespeicherten Wert v und liefert v zurück.
// Liefert null, falls k ==
// null oder falls zu k kein Wert gespeichert war
V remove(K k);
// Liefert true, falls der Wert v in der Map gespeichert ist
boolean contains(V v);
// wendet die Methode consumer.accept(v) auf alle in der Map gespeicherten Werte
// an
void forEach(Consumer<? super V> consumer);
int size(); // Anzahl an in der Map gespeicherten Werte
}
Loading…
Cancel
Save