mal sehen was eclipse jetzt kaputt macht
This commit is contained in:
parent
10c49e3a77
commit
c7a7cf0831
4
.gitignore
vendored
4
.gitignore
vendored
@ -1,3 +1,3 @@
|
||||
Java 2.iml
|
||||
java2.iml
|
||||
Java 2.iml
|
||||
java2.iml
|
||||
target
|
26
README.md
26
README.md
@ -1,13 +1,13 @@
|
||||
<img src="https://teamcity.torchwood.joethei.de/app/rest/builds/buildType:(id:Studium_Java2)/statusIcon">
|
||||
<img src="https://sonarqube.torchwood.joethei.de/api/project_badges/measure?project=Java_2&metric=alert_status">
|
||||
|
||||
<img src="https://sonarqube.torchwood.joethei.de/api/project_badges/measure?project=Java_2&metric=vulnerabilities">
|
||||
<img src="https://sonarqube.torchwood.joethei.de/api/project_badges/measure?project=Java_2&metric=bugs">
|
||||
<img src="https://sonarqube.torchwood.joethei.de/api/project_badges/measure?project=Java_2&metric=coverage">
|
||||
|
||||
<img src="https://sonarqube.torchwood.joethei.de/api/project_badges/measure?project=Java_2&metric=code_smells">
|
||||
|
||||
<img src="https://sonarqube.torchwood.joethei.de/api/project_badges/measure?project=Java_2&metric=sqale_rating">
|
||||
<img src="https://sonarqube.torchwood.joethei.de/api/project_badges/measure?project=Java_2&metric=ncloc">
|
||||
<img src="https://sonarqube.torchwood.joethei.de/api/project_badges/measure?project=Java_2&metric=sqale_index">
|
||||
<img src="https://sonarqube.torchwood.joethei.de/api/project_badges/measure?project=Java_2&metric=reliability_rating">
|
||||
<img src="https://teamcity.torchwood.joethei.de/app/rest/builds/buildType:(id:Studium_Java2)/statusIcon">
|
||||
<img src="https://sonarqube.torchwood.joethei.de/api/project_badges/measure?project=Java_2&metric=alert_status">
|
||||
|
||||
<img src="https://sonarqube.torchwood.joethei.de/api/project_badges/measure?project=Java_2&metric=vulnerabilities">
|
||||
<img src="https://sonarqube.torchwood.joethei.de/api/project_badges/measure?project=Java_2&metric=bugs">
|
||||
<img src="https://sonarqube.torchwood.joethei.de/api/project_badges/measure?project=Java_2&metric=coverage">
|
||||
|
||||
<img src="https://sonarqube.torchwood.joethei.de/api/project_badges/measure?project=Java_2&metric=code_smells">
|
||||
|
||||
<img src="https://sonarqube.torchwood.joethei.de/api/project_badges/measure?project=Java_2&metric=sqale_rating">
|
||||
<img src="https://sonarqube.torchwood.joethei.de/api/project_badges/measure?project=Java_2&metric=ncloc">
|
||||
<img src="https://sonarqube.torchwood.joethei.de/api/project_badges/measure?project=Java_2&metric=sqale_index">
|
||||
<img src="https://sonarqube.torchwood.joethei.de/api/project_badges/measure?project=Java_2&metric=reliability_rating">
|
||||
|
116
pom.xml
116
pom.xml
@ -1,59 +1,59 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<name>Java 2</name>
|
||||
|
||||
<groupId>de.joethei.hs</groupId>
|
||||
<artifactId>java2</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.7.0</version>
|
||||
<configuration>
|
||||
<source>1.8</source>
|
||||
<target>1.8</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>2.19.1</version>
|
||||
<configuration>
|
||||
<test>de.joethei.hs.java2.tests.*</test>
|
||||
</configuration>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.junit.platform</groupId>
|
||||
<artifactId>junit-platform-surefire-provider</artifactId>
|
||||
<version>1.0.1</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.12</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.vintage</groupId>
|
||||
<artifactId>junit-vintage-engine</artifactId>
|
||||
<version>4.12.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<name>Java 2</name>
|
||||
|
||||
<groupId>de.joethei.hs</groupId>
|
||||
<artifactId>java2</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.7.0</version>
|
||||
<configuration>
|
||||
<source>1.8</source>
|
||||
<target>1.8</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>2.19.1</version>
|
||||
<configuration>
|
||||
<test>de.joethei.hs.java2.tests.*</test>
|
||||
</configuration>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.junit.platform</groupId>
|
||||
<artifactId>junit-platform-surefire-provider</artifactId>
|
||||
<version>1.0.1</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.12</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.vintage</groupId>
|
||||
<artifactId>junit-vintage-engine</artifactId>
|
||||
<version>4.12.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
@ -1,159 +1,159 @@
|
||||
package de.joethei.hs.java2.praktikum.praktikum1;
|
||||
|
||||
public class GrosseZahl {
|
||||
|
||||
private int zahl[];
|
||||
|
||||
public GrosseZahl(String d) {
|
||||
Boolean korrekteEingabe=true;
|
||||
for(int i=0; i<d.length(); i++) {
|
||||
if(d.charAt(i) < '0' || d.charAt(i) > '9') {
|
||||
korrekteEingabe = false;
|
||||
}
|
||||
}
|
||||
if(korrekteEingabe) {
|
||||
zahl = new int[d.length()];
|
||||
for(int w=0; w<d.length(); w++) {
|
||||
zahl[w] = Integer.parseInt(String.valueOf(d.charAt(w)));
|
||||
}
|
||||
} else {
|
||||
throw new IllegalArgumentException("falscher Input");
|
||||
}
|
||||
}
|
||||
|
||||
public GrosseZahl(int i) {
|
||||
this(Integer.toString(i));
|
||||
}
|
||||
|
||||
public boolean less(GrosseZahl b) {
|
||||
if(this.zahl.length < b.zahl.length) return true;
|
||||
if(this.zahl.length > b.zahl.length) return false;
|
||||
for(int i = 0; i<this.zahl.length; i++) {
|
||||
if(this.zahl[i] > b.zahl[i]) return false;
|
||||
if(this.zahl[i] < b.zahl[i]) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public GrosseZahl add(GrosseZahl b) {
|
||||
int uebertrag = 0;
|
||||
GrosseZahl rueckgabe, operand;
|
||||
if(this.less(b)) {
|
||||
rueckgabe = new GrosseZahl(b.toString());
|
||||
operand = new GrosseZahl(this.toString());
|
||||
} else {
|
||||
rueckgabe = new GrosseZahl(this.toString());
|
||||
operand = new GrosseZahl(b.toString());
|
||||
}
|
||||
for(int i = (rueckgabe.zahl.length-1), w = (operand.zahl.length-1); i>=0; i--, w--) {
|
||||
rueckgabe.zahl[i] += uebertrag;
|
||||
uebertrag = 0;
|
||||
if(w>=0) {
|
||||
rueckgabe.zahl[i] += operand.zahl[w];
|
||||
}
|
||||
if(rueckgabe.zahl[i] > 9) {
|
||||
rueckgabe.zahl[i] -= 10;
|
||||
uebertrag = 1;
|
||||
}
|
||||
if(i==0 && uebertrag==1) {
|
||||
return new GrosseZahl("1"+rueckgabe.toString());
|
||||
}
|
||||
}
|
||||
return rueckgabe;
|
||||
}
|
||||
|
||||
public GrosseZahl sub(GrosseZahl b) {
|
||||
int uebertrag = 0;
|
||||
StringBuilder x;
|
||||
if(this.equals(b)) {
|
||||
return new GrosseZahl(0);
|
||||
} else if(this.less(b)) {
|
||||
return new GrosseZahl(0);
|
||||
}
|
||||
GrosseZahl rueckgabe = new GrosseZahl(this.toString());
|
||||
GrosseZahl operand = new GrosseZahl(b.toString());
|
||||
for(int i = (rueckgabe.zahl.length-1), w = (operand.zahl.length-1); i>=0; i--, w--) {
|
||||
if(w>=0) {
|
||||
rueckgabe.zahl[i] -= operand.zahl[w];
|
||||
}
|
||||
rueckgabe.zahl[i] -= uebertrag;
|
||||
uebertrag = 0;
|
||||
if(rueckgabe.zahl[i] < 0) {
|
||||
rueckgabe.zahl[i] += 10;
|
||||
uebertrag += 1;
|
||||
}
|
||||
}
|
||||
while(rueckgabe.zahl[0] == 0) {
|
||||
x = new StringBuilder();
|
||||
for(int i = 1; i<rueckgabe.zahl.length; i++) {
|
||||
x.append(rueckgabe.zahl[i]);
|
||||
}
|
||||
rueckgabe = new GrosseZahl(x.toString());
|
||||
}
|
||||
return rueckgabe;
|
||||
}
|
||||
|
||||
public GrosseZahl mult(GrosseZahl b) {
|
||||
GrosseZahl rueckgabe, rueckgabe_b, operand, operand2;
|
||||
rueckgabe_b = new GrosseZahl(0);
|
||||
if(this.less(b)) {
|
||||
operand2 = b;
|
||||
operand = this;
|
||||
} else {
|
||||
operand2 = this;
|
||||
operand = b;
|
||||
}
|
||||
for(int i = 0; i<operand.zahl.length; i++) {
|
||||
rueckgabe = new GrosseZahl(0);
|
||||
for(int w = 0; w<operand.zahl[i]; w++) {
|
||||
rueckgabe = rueckgabe.add(operand2);
|
||||
}
|
||||
rueckgabe_b = rueckgabe_b.add(rueckgabe);
|
||||
if(i != operand.zahl.length-1) {
|
||||
rueckgabe_b = new GrosseZahl(rueckgabe_b.toString()+"0");
|
||||
}
|
||||
}
|
||||
return rueckgabe_b;
|
||||
}
|
||||
|
||||
|
||||
public int length() {
|
||||
return zahl.length;
|
||||
}
|
||||
|
||||
public int numberAt(int i) {
|
||||
return zahl[i];
|
||||
}
|
||||
|
||||
public GrosseZahl ggT(GrosseZahl b) {
|
||||
GrosseZahl operand1 = new GrosseZahl(this.toString());
|
||||
GrosseZahl operand2 = new GrosseZahl(b.toString());
|
||||
if(operand1.equals(operand2)) return operand1;
|
||||
else if(operand1.less(operand2)) return operand1.ggT(operand2.sub(operand1));
|
||||
else return operand1.sub(operand2).ggT(operand2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder rueckgabe = new StringBuilder();
|
||||
for (int aZahl : zahl) {
|
||||
rueckgabe.append(Integer.toString(aZahl));
|
||||
}
|
||||
return rueckgabe.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if(o instanceof GrosseZahl) {
|
||||
GrosseZahl tmp = (GrosseZahl) o;
|
||||
if(tmp.zahl.length == this.zahl.length) {
|
||||
for(int i = this.zahl.length - 1; i >= 0; i--) {
|
||||
if(tmp.zahl[i] != this.zahl[i]) return false;
|
||||
}
|
||||
return true;
|
||||
}else return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
package de.joethei.hs.java2.praktikum.praktikum1;
|
||||
|
||||
public class GrosseZahl {
|
||||
|
||||
private int zahl[];
|
||||
|
||||
public GrosseZahl(String d) {
|
||||
Boolean korrekteEingabe=true;
|
||||
for(int i=0; i<d.length(); i++) {
|
||||
if(d.charAt(i) < '0' || d.charAt(i) > '9') {
|
||||
korrekteEingabe = false;
|
||||
}
|
||||
}
|
||||
if(korrekteEingabe) {
|
||||
zahl = new int[d.length()];
|
||||
for(int w=0; w<d.length(); w++) {
|
||||
zahl[w] = Integer.parseInt(String.valueOf(d.charAt(w)));
|
||||
}
|
||||
} else {
|
||||
throw new IllegalArgumentException("falscher Input");
|
||||
}
|
||||
}
|
||||
|
||||
public GrosseZahl(int i) {
|
||||
this(Integer.toString(i));
|
||||
}
|
||||
|
||||
public boolean less(GrosseZahl b) {
|
||||
if(this.zahl.length < b.zahl.length) return true;
|
||||
if(this.zahl.length > b.zahl.length) return false;
|
||||
for(int i = 0; i<this.zahl.length; i++) {
|
||||
if(this.zahl[i] > b.zahl[i]) return false;
|
||||
if(this.zahl[i] < b.zahl[i]) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public GrosseZahl add(GrosseZahl b) {
|
||||
int uebertrag = 0;
|
||||
GrosseZahl rueckgabe, operand;
|
||||
if(this.less(b)) {
|
||||
rueckgabe = new GrosseZahl(b.toString());
|
||||
operand = new GrosseZahl(this.toString());
|
||||
} else {
|
||||
rueckgabe = new GrosseZahl(this.toString());
|
||||
operand = new GrosseZahl(b.toString());
|
||||
}
|
||||
for(int i = (rueckgabe.zahl.length-1), w = (operand.zahl.length-1); i>=0; i--, w--) {
|
||||
rueckgabe.zahl[i] += uebertrag;
|
||||
uebertrag = 0;
|
||||
if(w>=0) {
|
||||
rueckgabe.zahl[i] += operand.zahl[w];
|
||||
}
|
||||
if(rueckgabe.zahl[i] > 9) {
|
||||
rueckgabe.zahl[i] -= 10;
|
||||
uebertrag = 1;
|
||||
}
|
||||
if(i==0 && uebertrag==1) {
|
||||
return new GrosseZahl("1"+rueckgabe.toString());
|
||||
}
|
||||
}
|
||||
return rueckgabe;
|
||||
}
|
||||
|
||||
public GrosseZahl sub(GrosseZahl b) {
|
||||
int uebertrag = 0;
|
||||
StringBuilder x;
|
||||
if(this.equals(b)) {
|
||||
return new GrosseZahl(0);
|
||||
} else if(this.less(b)) {
|
||||
return new GrosseZahl(0);
|
||||
}
|
||||
GrosseZahl rueckgabe = new GrosseZahl(this.toString());
|
||||
GrosseZahl operand = new GrosseZahl(b.toString());
|
||||
for(int i = (rueckgabe.zahl.length-1), w = (operand.zahl.length-1); i>=0; i--, w--) {
|
||||
if(w>=0) {
|
||||
rueckgabe.zahl[i] -= operand.zahl[w];
|
||||
}
|
||||
rueckgabe.zahl[i] -= uebertrag;
|
||||
uebertrag = 0;
|
||||
if(rueckgabe.zahl[i] < 0) {
|
||||
rueckgabe.zahl[i] += 10;
|
||||
uebertrag += 1;
|
||||
}
|
||||
}
|
||||
while(rueckgabe.zahl[0] == 0) {
|
||||
x = new StringBuilder();
|
||||
for(int i = 1; i<rueckgabe.zahl.length; i++) {
|
||||
x.append(rueckgabe.zahl[i]);
|
||||
}
|
||||
rueckgabe = new GrosseZahl(x.toString());
|
||||
}
|
||||
return rueckgabe;
|
||||
}
|
||||
|
||||
public GrosseZahl mult(GrosseZahl b) {
|
||||
GrosseZahl rueckgabe, rueckgabe_b, operand, operand2;
|
||||
rueckgabe_b = new GrosseZahl(0);
|
||||
if(this.less(b)) {
|
||||
operand2 = b;
|
||||
operand = this;
|
||||
} else {
|
||||
operand2 = this;
|
||||
operand = b;
|
||||
}
|
||||
for(int i = 0; i<operand.zahl.length; i++) {
|
||||
rueckgabe = new GrosseZahl(0);
|
||||
for(int w = 0; w<operand.zahl[i]; w++) {
|
||||
rueckgabe = rueckgabe.add(operand2);
|
||||
}
|
||||
rueckgabe_b = rueckgabe_b.add(rueckgabe);
|
||||
if(i != operand.zahl.length-1) {
|
||||
rueckgabe_b = new GrosseZahl(rueckgabe_b.toString()+"0");
|
||||
}
|
||||
}
|
||||
return rueckgabe_b;
|
||||
}
|
||||
|
||||
|
||||
public int length() {
|
||||
return zahl.length;
|
||||
}
|
||||
|
||||
public int numberAt(int i) {
|
||||
return zahl[i];
|
||||
}
|
||||
|
||||
public GrosseZahl ggT(GrosseZahl b) {
|
||||
GrosseZahl operand1 = new GrosseZahl(this.toString());
|
||||
GrosseZahl operand2 = new GrosseZahl(b.toString());
|
||||
if(operand1.equals(operand2)) return operand1;
|
||||
else if(operand1.less(operand2)) return operand1.ggT(operand2.sub(operand1));
|
||||
else return operand1.sub(operand2).ggT(operand2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder rueckgabe = new StringBuilder();
|
||||
for (int aZahl : zahl) {
|
||||
rueckgabe.append(Integer.toString(aZahl));
|
||||
}
|
||||
return rueckgabe.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if(o instanceof GrosseZahl) {
|
||||
GrosseZahl tmp = (GrosseZahl) o;
|
||||
if(tmp.zahl.length == this.zahl.length) {
|
||||
for(int i = this.zahl.length - 1; i >= 0; i--) {
|
||||
if(tmp.zahl[i] != this.zahl[i]) return false;
|
||||
}
|
||||
return true;
|
||||
}else return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,19 +1,19 @@
|
||||
Entwickeln Sie eine Klasse GrosseZahl, die ganze Zahlen >=0 repräsentiert. Negative Zahlen werden zur Vereinfachung nicht berücksichtigt. Die Klasse ist nicht durch den Wertebereich primitiver Typen begrenzt, sondern speichert ein Feld (int-Array, keine ArrayList!) mit den Dezimalziffern einer Zahl.
|
||||
Definieren Sie folgende Methoden:
|
||||
|
||||
GrosseZahl(String d)
|
||||
Erzeugt eine Zahl, deren Dezimaldarstellung in d gegeben ist. d besteht ausschließlich aus Dezimalziffern.
|
||||
GrosseZahl(int i)
|
||||
Erzeugt eine Zahl mit dem Wert von i.
|
||||
String toString()
|
||||
Gibt die Zahl als String zurück.
|
||||
boolean less(GrosseZahl b)
|
||||
Liefert true, wenn diese Zahl echt kleiner als b ist.
|
||||
GrosseZahl add(GrosseZahl b)
|
||||
Liefert eine neue Zahl mit der Summe dieser Zahl und b. Das this-Objekt wird nicht verändert.
|
||||
GrosseZahl mult(GrosseZahl b)
|
||||
Liefert eine neue Zahl mit dem Produkt dieser Zahl und b. Das this-Objekt wird nicht verändert. Hinweis: Sie können dazu die add-Methode nutzen!
|
||||
GrosseZahl ggT(GrosseZahl b)
|
||||
Liefert den größten gemeinsamen Teiler (ggt) dieser Zahl und b zurück. Das this-Objekt wird nicht verändert. Die Berechnung muss rekursiv(!) nach dem klassischen euklidischen Algorithmus erfolgen. Nach diesem wird immer die kleinere Zahl von der größeren Zahl abgezogen, bis beide Zahlen gleich groß sind. Dieses Ergebnis ist dann der ggT.
|
||||
|
||||
Entwickeln Sie eine Klasse GrosseZahl, die ganze Zahlen >=0 repräsentiert. Negative Zahlen werden zur Vereinfachung nicht berücksichtigt. Die Klasse ist nicht durch den Wertebereich primitiver Typen begrenzt, sondern speichert ein Feld (int-Array, keine ArrayList!) mit den Dezimalziffern einer Zahl.
|
||||
Definieren Sie folgende Methoden:
|
||||
|
||||
GrosseZahl(String d)
|
||||
Erzeugt eine Zahl, deren Dezimaldarstellung in d gegeben ist. d besteht ausschließlich aus Dezimalziffern.
|
||||
GrosseZahl(int i)
|
||||
Erzeugt eine Zahl mit dem Wert von i.
|
||||
String toString()
|
||||
Gibt die Zahl als String zurück.
|
||||
boolean less(GrosseZahl b)
|
||||
Liefert true, wenn diese Zahl echt kleiner als b ist.
|
||||
GrosseZahl add(GrosseZahl b)
|
||||
Liefert eine neue Zahl mit der Summe dieser Zahl und b. Das this-Objekt wird nicht verändert.
|
||||
GrosseZahl mult(GrosseZahl b)
|
||||
Liefert eine neue Zahl mit dem Produkt dieser Zahl und b. Das this-Objekt wird nicht verändert. Hinweis: Sie können dazu die add-Methode nutzen!
|
||||
GrosseZahl ggT(GrosseZahl b)
|
||||
Liefert den größten gemeinsamen Teiler (ggt) dieser Zahl und b zurück. Das this-Objekt wird nicht verändert. Die Berechnung muss rekursiv(!) nach dem klassischen euklidischen Algorithmus erfolgen. Nach diesem wird immer die kleinere Zahl von der größeren Zahl abgezogen, bis beide Zahlen gleich groß sind. Dieses Ergebnis ist dann der ggT.
|
||||
|
||||
Die Verwendung der Klasse BigInteger aus der Java-Bibliothek ist für diese Aufgabe nicht erlaubt! Sie dürfen und sollten aber eigene Hilfsmethoden (private) hinzufügen, um sich die Lösung der Aufgaben zu erleichtern.
|
@ -1,107 +1,107 @@
|
||||
package de.joethei.hs.java2.praktikum.praktikum2;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class CharCollection implements Cloneable{
|
||||
|
||||
private List<Character> list = new ArrayList<>();
|
||||
|
||||
public CharCollection(char... cc) {
|
||||
for(char c:cc) this.list.add(c);
|
||||
}
|
||||
|
||||
public CharCollection(String s) {
|
||||
for(char c : s.toCharArray()) {
|
||||
this.list.add(c);
|
||||
}
|
||||
}
|
||||
|
||||
public int size() {
|
||||
return this.list.size();
|
||||
}
|
||||
|
||||
public int count(char c) {
|
||||
int result = 0;
|
||||
for(char b:list) {
|
||||
if(b == c)result ++;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public int different() {
|
||||
Set<Character> set = new HashSet<>(list);
|
||||
return set.size();
|
||||
}
|
||||
|
||||
public char top() {
|
||||
if(list.isEmpty()) return 0;
|
||||
int max = 0;
|
||||
char character ='_';
|
||||
for(char c : list) {
|
||||
int count = count(c);
|
||||
if(count >= max) {
|
||||
character = c;
|
||||
max = count;
|
||||
}
|
||||
}
|
||||
return character;
|
||||
}
|
||||
|
||||
public CharCollection moreThan(int m) {
|
||||
ArrayList<Character> list2 = new ArrayList<>();
|
||||
for(char c:this.list){
|
||||
if(this.count(c) > m) {
|
||||
list2.add(c);
|
||||
}
|
||||
}
|
||||
StringBuilder s = new StringBuilder();
|
||||
for(char c:list2) s.append(c);
|
||||
return new CharCollection(s.toString());
|
||||
}
|
||||
|
||||
public CharCollection except(CharCollection cc) {
|
||||
ArrayList<Character> list= new ArrayList<>(this.list);
|
||||
boolean removeCharacterOnce = false;
|
||||
for(int i=0; i<list.size(); i++){
|
||||
for(int w=0; w<cc.list.size(); w++) {
|
||||
if(cc.list.get(w)==list.get(i) && !removeCharacterOnce) {
|
||||
removeCharacterOnce=true;
|
||||
cc.list.remove(w);
|
||||
list.remove(i);
|
||||
}
|
||||
}
|
||||
if(removeCharacterOnce) i--;
|
||||
removeCharacterOnce = false;
|
||||
}
|
||||
StringBuilder s = new StringBuilder();
|
||||
for(char c:list) s.append(c);
|
||||
return new CharCollection(s.toString());
|
||||
}
|
||||
|
||||
public boolean isSubset(CharCollection cc) {
|
||||
ArrayList<Character> list = new ArrayList<>(this.list);
|
||||
for(char c:cc.list) {
|
||||
if(!list.contains(c)) return false;
|
||||
else list.remove(list.indexOf(c));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return list.toString().replace('[', '(').replace(']', ')');
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if(o instanceof CharCollection) {
|
||||
CharCollection c = (CharCollection) o;
|
||||
if(this.size() != c.size()) return false;
|
||||
return this.isSubset(c);
|
||||
}return false;
|
||||
}
|
||||
|
||||
package de.joethei.hs.java2.praktikum.praktikum2;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class CharCollection implements Cloneable{
|
||||
|
||||
private List<Character> list = new ArrayList<>();
|
||||
|
||||
public CharCollection(char... cc) {
|
||||
for(char c:cc) this.list.add(c);
|
||||
}
|
||||
|
||||
public CharCollection(String s) {
|
||||
for(char c : s.toCharArray()) {
|
||||
this.list.add(c);
|
||||
}
|
||||
}
|
||||
|
||||
public int size() {
|
||||
return this.list.size();
|
||||
}
|
||||
|
||||
public int count(char c) {
|
||||
int result = 0;
|
||||
for(char b:list) {
|
||||
if(b == c)result ++;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public int different() {
|
||||
Set<Character> set = new HashSet<>(list);
|
||||
return set.size();
|
||||
}
|
||||
|
||||
public char top() {
|
||||
if(list.isEmpty()) return 0;
|
||||
int max = 0;
|
||||
char character ='_';
|
||||
for(char c : list) {
|
||||
int count = count(c);
|
||||
if(count >= max) {
|
||||
character = c;
|
||||
max = count;
|
||||
}
|
||||
}
|
||||
return character;
|
||||
}
|
||||
|
||||
public CharCollection moreThan(int m) {
|
||||
ArrayList<Character> list2 = new ArrayList<>();
|
||||
for(char c:this.list){
|
||||
if(this.count(c) > m) {
|
||||
list2.add(c);
|
||||
}
|
||||
}
|
||||
StringBuilder s = new StringBuilder();
|
||||
for(char c:list2) s.append(c);
|
||||
return new CharCollection(s.toString());
|
||||
}
|
||||
|
||||
public CharCollection except(CharCollection cc) {
|
||||
ArrayList<Character> list= new ArrayList<>(this.list);
|
||||
boolean removeCharacterOnce = false;
|
||||
for(int i=0; i<list.size(); i++){
|
||||
for(int w=0; w<cc.list.size(); w++) {
|
||||
if(cc.list.get(w)==list.get(i) && !removeCharacterOnce) {
|
||||
removeCharacterOnce=true;
|
||||
cc.list.remove(w);
|
||||
list.remove(i);
|
||||
}
|
||||
}
|
||||
if(removeCharacterOnce) i--;
|
||||
removeCharacterOnce = false;
|
||||
}
|
||||
StringBuilder s = new StringBuilder();
|
||||
for(char c:list) s.append(c);
|
||||
return new CharCollection(s.toString());
|
||||
}
|
||||
|
||||
public boolean isSubset(CharCollection cc) {
|
||||
ArrayList<Character> list = new ArrayList<>(this.list);
|
||||
for(char c:cc.list) {
|
||||
if(!list.contains(c)) return false;
|
||||
else list.remove(list.indexOf(c));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return list.toString().replace('[', '(').replace(']', ')');
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if(o instanceof CharCollection) {
|
||||
CharCollection c = (CharCollection) o;
|
||||
if(this.size() != c.size()) return false;
|
||||
return this.isSubset(c);
|
||||
}return false;
|
||||
}
|
||||
|
||||
}
|
@ -1,41 +1,41 @@
|
||||
Als Buchstabensammlung wird hier eine beliebig große, unveränderliche Sammlung von großen Buchstaben bezeichnet. In einer Sammlung können einzelne Buchstaben fehlen oder mehrfach enthalten sein. Die Reihenfolge ist irrelevant. Eine Sammlung ist zum Beispiel:
|
||||
(A, B, R, A, K, A, D, A, B, R, A)
|
||||
Definieren Sie auf der Grundlage einer ArrayList eine Klasse CharCollection, deren Elemente Sammlungen repräsentieren. CharCollection bietet folgende Funktionalität:
|
||||
|
||||
CharCollection(char... cc)
|
||||
Erzeugt eine neue Sammlung aus einer Liste großer Buchstaben. Eine Sammlung wird zum Beispiel erzeugt mit:
|
||||
CharCollection cc = new CharCollection('A', 'B', 'R', 'A', 'K', 'A', 'D', 'A', 'B', 'R', 'A');
|
||||
CharCollection(String s)
|
||||
Erzeugt eine neue Sammlung aus den Buchstaben eines Strings aus großen Buchstaben. Die gleiche Sammlung wie im vorhergehenden Punkt wird zum Beispiel erzeugt mit:
|
||||
CharCollection cc = new CharCollection("ABRAKADABRA");
|
||||
int size()
|
||||
Liefert die Anzahl Buchstaben der Sammlung. Zum Beispiel:
|
||||
System.out.println(cc.size()); // 11
|
||||
int count(char c)
|
||||
Liefert die Anzahl Vorkommen des Buchstabens c. Beispiele:
|
||||
System.out.println(cc.count('R')); // 2
|
||||
System.out.println(cc.count('X')); // 0
|
||||
int different()
|
||||
Liefert die Anzahl verschiedener Buchstaben in der Sammlung. Zum Beispiel:
|
||||
System.out.println(cc.different()); // 5
|
||||
char top()
|
||||
Liefert den häufigsten Buchstaben in der Sammlung. Wenn es mehrere Kandidaten gibt, wird irgendeiner davon gewählt. Ein Beispiel:
|
||||
System.out.println(cc.top()); // A
|
||||
Eine leere Sammlung liefert das Zeichen mit dem Zeichencode 0zurück.
|
||||
public String toString()
|
||||
Liefert eine lesbare Darstellung der Sammlung.
|
||||
System.out.println(cc); // (A, B, R, A, K, A, D, A, B, R, A)
|
||||
Die Reihenfolge der Elemente ist irrelevant.
|
||||
CharCollection moreThan(int m)
|
||||
Liefert eine neue Sammlung, in der nur noch die Buchstaben enthalten sind, die mehr als m-mal vorkommen. Beispiel: Nur Buchstaben, die wenigstens 2-mal vorkommen, bleiben übrig. K und D fallen heraus:
|
||||
System.out.println(cc.moreThan(1)); // (A, B, R, A, A, A, B, R, A)
|
||||
public boolean equals(Object x)
|
||||
Vergleicht eine Sammlung mit einem anderen Objekt x. Liefert true, wenn x eine Sammlung mit den gleichen Buchstaben ist, und ansonsten false. Die Reihenfolge spielt keine Rolle.
|
||||
CharCollection except(CharCollection cc)
|
||||
Liefert eine neue Sammlung aus den Buchstaben dieser Sammlung, wobei alle Buchstaben von cc entfernt sind. Beispiel:
|
||||
System.out.println(cc.except(new CharCollection("ABRAXAS"))); // (K, D, A, B, R, A)
|
||||
boolean isSubset(CharCollection cc)
|
||||
Liefert zurück, ob die als Parameter übergebene Sammlung in der Sammlung enthalten ist, für die die Methode aufgerufen wurde (this). Beispiel:
|
||||
System.out.println(cc.isSubset(new CharCollection("ABRAAA"))); // true
|
||||
|
||||
Ihre Lösung muss intern als Objektvariable eine List<Character> zur Speicherung der Buchstabensammlung verwenden!
|
||||
Als Buchstabensammlung wird hier eine beliebig große, unveränderliche Sammlung von großen Buchstaben bezeichnet. In einer Sammlung können einzelne Buchstaben fehlen oder mehrfach enthalten sein. Die Reihenfolge ist irrelevant. Eine Sammlung ist zum Beispiel:
|
||||
(A, B, R, A, K, A, D, A, B, R, A)
|
||||
Definieren Sie auf der Grundlage einer ArrayList eine Klasse CharCollection, deren Elemente Sammlungen repräsentieren. CharCollection bietet folgende Funktionalität:
|
||||
|
||||
CharCollection(char... cc)
|
||||
Erzeugt eine neue Sammlung aus einer Liste großer Buchstaben. Eine Sammlung wird zum Beispiel erzeugt mit:
|
||||
CharCollection cc = new CharCollection('A', 'B', 'R', 'A', 'K', 'A', 'D', 'A', 'B', 'R', 'A');
|
||||
CharCollection(String s)
|
||||
Erzeugt eine neue Sammlung aus den Buchstaben eines Strings aus großen Buchstaben. Die gleiche Sammlung wie im vorhergehenden Punkt wird zum Beispiel erzeugt mit:
|
||||
CharCollection cc = new CharCollection("ABRAKADABRA");
|
||||
int size()
|
||||
Liefert die Anzahl Buchstaben der Sammlung. Zum Beispiel:
|
||||
System.out.println(cc.size()); // 11
|
||||
int count(char c)
|
||||
Liefert die Anzahl Vorkommen des Buchstabens c. Beispiele:
|
||||
System.out.println(cc.count('R')); // 2
|
||||
System.out.println(cc.count('X')); // 0
|
||||
int different()
|
||||
Liefert die Anzahl verschiedener Buchstaben in der Sammlung. Zum Beispiel:
|
||||
System.out.println(cc.different()); // 5
|
||||
char top()
|
||||
Liefert den häufigsten Buchstaben in der Sammlung. Wenn es mehrere Kandidaten gibt, wird irgendeiner davon gewählt. Ein Beispiel:
|
||||
System.out.println(cc.top()); // A
|
||||
Eine leere Sammlung liefert das Zeichen mit dem Zeichencode 0zurück.
|
||||
public String toString()
|
||||
Liefert eine lesbare Darstellung der Sammlung.
|
||||
System.out.println(cc); // (A, B, R, A, K, A, D, A, B, R, A)
|
||||
Die Reihenfolge der Elemente ist irrelevant.
|
||||
CharCollection moreThan(int m)
|
||||
Liefert eine neue Sammlung, in der nur noch die Buchstaben enthalten sind, die mehr als m-mal vorkommen. Beispiel: Nur Buchstaben, die wenigstens 2-mal vorkommen, bleiben übrig. K und D fallen heraus:
|
||||
System.out.println(cc.moreThan(1)); // (A, B, R, A, A, A, B, R, A)
|
||||
public boolean equals(Object x)
|
||||
Vergleicht eine Sammlung mit einem anderen Objekt x. Liefert true, wenn x eine Sammlung mit den gleichen Buchstaben ist, und ansonsten false. Die Reihenfolge spielt keine Rolle.
|
||||
CharCollection except(CharCollection cc)
|
||||
Liefert eine neue Sammlung aus den Buchstaben dieser Sammlung, wobei alle Buchstaben von cc entfernt sind. Beispiel:
|
||||
System.out.println(cc.except(new CharCollection("ABRAXAS"))); // (K, D, A, B, R, A)
|
||||
boolean isSubset(CharCollection cc)
|
||||
Liefert zurück, ob die als Parameter übergebene Sammlung in der Sammlung enthalten ist, für die die Methode aufgerufen wurde (this). Beispiel:
|
||||
System.out.println(cc.isSubset(new CharCollection("ABRAAA"))); // true
|
||||
|
||||
Ihre Lösung muss intern als Objektvariable eine List<Character> zur Speicherung der Buchstabensammlung verwenden!
|
||||
|
@ -1,8 +1,8 @@
|
||||
package de.joethei.hs.java2.praktikum.praktikum3;
|
||||
|
||||
public class TextFileFormatException extends Exception{
|
||||
|
||||
public TextFileFormatException(String s) {
|
||||
super(s);
|
||||
}
|
||||
package de.joethei.hs.java2.praktikum.praktikum3;
|
||||
|
||||
public class TextFileFormatException extends Exception{
|
||||
|
||||
public TextFileFormatException(String s) {
|
||||
super(s);
|
||||
}
|
||||
}
|
@ -1,43 +1,43 @@
|
||||
package de.joethei.hs.java2.praktikum.praktikum3;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class Vorlesung {
|
||||
private String studiengruppe;
|
||||
private String title;
|
||||
private String dozent;
|
||||
private int teilnehmerzahl;
|
||||
|
||||
public Vorlesung(List<String> list) throws TextFileFormatException {
|
||||
if(list.size() != 4) throw new TextFileFormatException("invalid number of Strings in list");
|
||||
this.studiengruppe = list.get(0);
|
||||
this.title = list.get(1);
|
||||
this.dozent = list.get(2);
|
||||
try {
|
||||
this.teilnehmerzahl = Integer.parseInt(list.get(3));
|
||||
}catch (NumberFormatException ex) {
|
||||
throw new TextFileFormatException("Input is no number");
|
||||
}
|
||||
}
|
||||
|
||||
String getStudiengruppe() {
|
||||
return studiengruppe;
|
||||
}
|
||||
|
||||
String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
String getDozent() {
|
||||
return dozent;
|
||||
}
|
||||
|
||||
int getTeilnehmerzahl() {
|
||||
return teilnehmerzahl;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return studiengruppe + ":" + title + ":" + dozent + ":" + teilnehmerzahl;
|
||||
}
|
||||
package de.joethei.hs.java2.praktikum.praktikum3;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class Vorlesung {
|
||||
private String studiengruppe;
|
||||
private String title;
|
||||
private String dozent;
|
||||
private int teilnehmerzahl;
|
||||
|
||||
public Vorlesung(List<String> list) throws TextFileFormatException {
|
||||
if(list.size() != 4) throw new TextFileFormatException("invalid number of Strings in list");
|
||||
this.studiengruppe = list.get(0);
|
||||
this.title = list.get(1);
|
||||
this.dozent = list.get(2);
|
||||
try {
|
||||
this.teilnehmerzahl = Integer.parseInt(list.get(3));
|
||||
}catch (NumberFormatException ex) {
|
||||
throw new TextFileFormatException("Input is no number");
|
||||
}
|
||||
}
|
||||
|
||||
String getStudiengruppe() {
|
||||
return studiengruppe;
|
||||
}
|
||||
|
||||
String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
String getDozent() {
|
||||
return dozent;
|
||||
}
|
||||
|
||||
int getTeilnehmerzahl() {
|
||||
return teilnehmerzahl;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return studiengruppe + ":" + title + ":" + dozent + ":" + teilnehmerzahl;
|
||||
}
|
||||
}
|
@ -1,112 +1,112 @@
|
||||
package de.joethei.hs.java2.praktikum.praktikum3;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class Vorlesungsverzeichnis implements Comparator<Vorlesung>{
|
||||
|
||||
private Set<Vorlesung> vorlesungen = new HashSet<>();
|
||||
|
||||
public Vorlesungsverzeichnis(String filename) throws IOException, TextFileFormatException {
|
||||
List<List<String>> datenbasis = load(filename);
|
||||
for (List<String> entry : datenbasis) {
|
||||
if (entry.size() != 4) throw new TextFileFormatException("unexpected number of Strings in line");
|
||||
for (String s : entry) if (s.isEmpty()) throw new TextFileFormatException("empty attribute");
|
||||
|
||||
vorlesungen.add(new Vorlesung(entry));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Lädt die Datenbasis von einer Datei
|
||||
* @param filename Dateiname
|
||||
* @return Liste der Einträge
|
||||
* @throws IOException Dateifehler
|
||||
*/
|
||||
private List<List<String>> load(String filename) throws IOException {
|
||||
List<List<String>> result = new ArrayList<>();
|
||||
try(BufferedReader br = new BufferedReader(new FileReader(filename))) {
|
||||
for (String line = br.readLine(); line != null; line = br.readLine())
|
||||
result.add(Arrays.asList(line.split(":")));
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return eine alphabetisch sortierte Liste mit den Titeln aller Vorlesungen.
|
||||
*/
|
||||
public List<String> titles() {
|
||||
SortedSet<String> set = new TreeSet<>();
|
||||
vorlesungen.forEach(vorlesung -> set.add(vorlesung.getTitle()));
|
||||
return new ArrayList<>(set);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return die Menge derjenigen Dozenten, die zwei oder mehr Vorlesungen halten.
|
||||
*/
|
||||
public Set<String> workaholics() {
|
||||
Map<String, Set<String>> map = vorlesungen.stream().collect(
|
||||
Collectors.groupingBy(Vorlesung::getDozent,
|
||||
Collectors.mapping(Vorlesung::getTitle, Collectors.toSet())));
|
||||
Set<String> set = new HashSet<>();
|
||||
map.forEach((s, strings) -> {
|
||||
if(strings.size() >= 2) set.add(s);
|
||||
});
|
||||
return set;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return eine Map, die Studiengruppen auf Listen von Vorlesungstiteln abbildet.
|
||||
*/
|
||||
public Map<String, List<String>> groupToTitles() {
|
||||
Map<String, List<String>> map = vorlesungen.stream().collect(
|
||||
Collectors.groupingBy(Vorlesung::getStudiengruppe,
|
||||
Collectors.mapping(Vorlesung::getTitle, Collectors.toList())));
|
||||
map.forEach((s, strings) -> Collections.sort(strings));
|
||||
return map;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return eine Map, die Vorlesungen auf Listen von Dozenten, die diese Vorlesungen halten, abbildet.
|
||||
* Als Schlüssel werden in der Map nur Vorlesungen verwendet, die von unterschiedlichen Dozenten gehalten werden.
|
||||
*/
|
||||
public Map<String, List<String>> multipleTitles() {
|
||||
Map<String, List<String>> map = vorlesungen.stream().collect(
|
||||
Collectors.groupingBy(Vorlesung::getTitle,
|
||||
Collectors.mapping(Vorlesung::getDozent, Collectors.toList())));
|
||||
|
||||
Iterator<Map.Entry<String, List<String>>> iterator = map.entrySet().iterator();
|
||||
while (iterator.hasNext()) {
|
||||
Map.Entry<String, List<String>> entry = iterator.next();
|
||||
if(entry.getValue().size() < 2) iterator.remove();
|
||||
Collections.sort(entry.getValue());
|
||||
}
|
||||
|
||||
return map;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Liste mit Vorlesungstitel absteigend sortiert nach Teilnehmerzahl
|
||||
*/
|
||||
public List<String> descendingTitles() {
|
||||
SortedSet<Vorlesung> set = new TreeSet<>(this.reversed());
|
||||
set.addAll(vorlesungen);
|
||||
|
||||
List<String> list = new ArrayList<>();
|
||||
set.forEach(vorlesung -> list.add(vorlesung.getTitle()));
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* für die aufsteigende Sortierung
|
||||
*/
|
||||
@Override
|
||||
public int compare(Vorlesung o1, Vorlesung o2) {
|
||||
return Integer.compare(o1.getTeilnehmerzahl(), o2.getTeilnehmerzahl());
|
||||
}
|
||||
package de.joethei.hs.java2.praktikum.praktikum3;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class Vorlesungsverzeichnis implements Comparator<Vorlesung>{
|
||||
|
||||
private Set<Vorlesung> vorlesungen = new HashSet<>();
|
||||
|
||||
public Vorlesungsverzeichnis(String filename) throws IOException, TextFileFormatException {
|
||||
List<List<String>> datenbasis = load(filename);
|
||||
for (List<String> entry : datenbasis) {
|
||||
if (entry.size() != 4) throw new TextFileFormatException("unexpected number of Strings in line");
|
||||
for (String s : entry) if (s.isEmpty()) throw new TextFileFormatException("empty attribute");
|
||||
|
||||
vorlesungen.add(new Vorlesung(entry));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Lädt die Datenbasis von einer Datei
|
||||
* @param filename Dateiname
|
||||
* @return Liste der Einträge
|
||||
* @throws IOException Dateifehler
|
||||
*/
|
||||
private List<List<String>> load(String filename) throws IOException {
|
||||
List<List<String>> result = new ArrayList<>();
|
||||
try(BufferedReader br = new BufferedReader(new FileReader(filename))) {
|
||||
for (String line = br.readLine(); line != null; line = br.readLine())
|
||||
result.add(Arrays.asList(line.split(":")));
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return eine alphabetisch sortierte Liste mit den Titeln aller Vorlesungen.
|
||||
*/
|
||||
public List<String> titles() {
|
||||
SortedSet<String> set = new TreeSet<>();
|
||||
vorlesungen.forEach(vorlesung -> set.add(vorlesung.getTitle()));
|
||||
return new ArrayList<>(set);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return die Menge derjenigen Dozenten, die zwei oder mehr Vorlesungen halten.
|
||||
*/
|
||||
public Set<String> workaholics() {
|
||||
Map<String, Set<String>> map = vorlesungen.stream().collect(
|
||||
Collectors.groupingBy(Vorlesung::getDozent,
|
||||
Collectors.mapping(Vorlesung::getTitle, Collectors.toSet())));
|
||||
Set<String> set = new HashSet<>();
|
||||
map.forEach((s, strings) -> {
|
||||
if(strings.size() >= 2) set.add(s);
|
||||
});
|
||||
return set;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return eine Map, die Studiengruppen auf Listen von Vorlesungstiteln abbildet.
|
||||
*/
|
||||
public Map<String, List<String>> groupToTitles() {
|
||||
Map<String, List<String>> map = vorlesungen.stream().collect(
|
||||
Collectors.groupingBy(Vorlesung::getStudiengruppe,
|
||||
Collectors.mapping(Vorlesung::getTitle, Collectors.toList())));
|
||||
map.forEach((s, strings) -> Collections.sort(strings));
|
||||
return map;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return eine Map, die Vorlesungen auf Listen von Dozenten, die diese Vorlesungen halten, abbildet.
|
||||
* Als Schlüssel werden in der Map nur Vorlesungen verwendet, die von unterschiedlichen Dozenten gehalten werden.
|
||||
*/
|
||||
public Map<String, List<String>> multipleTitles() {
|
||||
Map<String, List<String>> map = vorlesungen.stream().collect(
|
||||
Collectors.groupingBy(Vorlesung::getTitle,
|
||||
Collectors.mapping(Vorlesung::getDozent, Collectors.toList())));
|
||||
|
||||
Iterator<Map.Entry<String, List<String>>> iterator = map.entrySet().iterator();
|
||||
while (iterator.hasNext()) {
|
||||
Map.Entry<String, List<String>> entry = iterator.next();
|
||||
if(entry.getValue().size() < 2) iterator.remove();
|
||||
Collections.sort(entry.getValue());
|
||||
}
|
||||
|
||||
return map;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Liste mit Vorlesungstitel absteigend sortiert nach Teilnehmerzahl
|
||||
*/
|
||||
public List<String> descendingTitles() {
|
||||
SortedSet<Vorlesung> set = new TreeSet<>(this.reversed());
|
||||
set.addAll(vorlesungen);
|
||||
|
||||
List<String> list = new ArrayList<>();
|
||||
set.forEach(vorlesung -> list.add(vorlesung.getTitle()));
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* für die aufsteigende Sortierung
|
||||
*/
|
||||
@Override
|
||||
public int compare(Vorlesung o1, Vorlesung o2) {
|
||||
return Integer.compare(o1.getTeilnehmerzahl(), o2.getTeilnehmerzahl());
|
||||
}
|
||||
}
|
@ -1,43 +1,43 @@
|
||||
In einer Textdatei sind Vorlesungsdaten gespeichert. Jede Zeile besteht aus vier Teilstrings, die mit Doppelpunkten getrennt sind. Der Doppelpunkt kommt sonst nicht vor. Die vier Strings in einer Zeile enthalten der Reihe nach:
|
||||
|
||||
Studiengruppe
|
||||
Titel der Vorlesung
|
||||
Dozent
|
||||
Teilnehmerzahl
|
||||
|
||||
Ein Ausschnitt aus der Datei könnte so aussehen:
|
||||
|
||||
I2:Java 2:Rump:100
|
||||
I2:Algorithmen und Datenstrukturen:Totzauer:80
|
||||
MT2:Mathematik 2:von Coelln:60
|
||||
MT2:Audio-/Videotechnik:Lemke:50
|
||||
E2:Mathematik 2:Rabe:70
|
||||
|
||||
|
||||
Die folgende Methode load liest eine solche Datei und liefert sie als Liste von Stringlisten ("Datenbasis") zurück.
|
||||
|
||||
public static List<List<String>> load(String filename) throws IOException {
|
||||
List<List<String>> result = new ArrayList<List<String>>();
|
||||
BufferedReader br = new BufferedReader(new FileReader(filename));
|
||||
for (String line=br.readLine(); line!=null; line=br.readLine())
|
||||
result.add(Arrays.asList(line.split(":")));
|
||||
br.close();
|
||||
return result;
|
||||
}
|
||||
|
||||
Kapseln Sie eine derartige Datenbasis in einer Klasse Vorlesungsverzeichnis im Paket vorlesung mit den folgenden Methoden:
|
||||
|
||||
Konstruktor
|
||||
Lädt die Datenbasis von einer Datei, deren Name als String übergeben wird. Für alle möglichen Formatfehler in der Datei soll eine TextFileFormatException mit einer aussagekräftigen Fehlermeldung geworfen werden.
|
||||
public List<String> titles()
|
||||
Liefert eine alphabetisch sortierte Liste mit den Titeln aller Vorlesungen.
|
||||
public Set<String> workaholics()
|
||||
Liefert die Menge derjenigen Dozenten, die zwei oder mehr Vorlesungen halten.
|
||||
public Map<String, List<String>> groupToTitles()
|
||||
Liefert eine Map, die Studiengruppen auf Listen von Vorlesungstiteln abbildet. Unter dem Schlüssel MT2 wäre für die oben angegebene Datenbasis zum Beispiel als Wert die Liste [Mathematik 2, Audio-/Videotechnik] zu finden.
|
||||
public Map<String, List<String>> multipleTitles()
|
||||
Liefert eine Map, die Vorlesungen auf Listen von Dozenten, die diese Vorlesungen halten, abbildet. Als Schlüssel werden in der Map nur Vorlesungen verwendet, die von unterschiedlichen Dozenten gehalten werden. Entsprechend der obigen Datenbasis würde in diesem Fall nur ein Eintrag in der Map stehen mit dem Schlüssel Mathematik 2 und dem Wert [von Coelln, Rabe] als Liste.
|
||||
public List<String> descendingTitles()
|
||||
Liefert eine nach Teilnehmerzahl absteigend(!) sortierte Liste mit den Titeln aller Vorlesungen.
|
||||
|
||||
In einer Textdatei sind Vorlesungsdaten gespeichert. Jede Zeile besteht aus vier Teilstrings, die mit Doppelpunkten getrennt sind. Der Doppelpunkt kommt sonst nicht vor. Die vier Strings in einer Zeile enthalten der Reihe nach:
|
||||
|
||||
Studiengruppe
|
||||
Titel der Vorlesung
|
||||
Dozent
|
||||
Teilnehmerzahl
|
||||
|
||||
Ein Ausschnitt aus der Datei könnte so aussehen:
|
||||
|
||||
I2:Java 2:Rump:100
|
||||
I2:Algorithmen und Datenstrukturen:Totzauer:80
|
||||
MT2:Mathematik 2:von Coelln:60
|
||||
MT2:Audio-/Videotechnik:Lemke:50
|
||||
E2:Mathematik 2:Rabe:70
|
||||
|
||||
|
||||
Die folgende Methode load liest eine solche Datei und liefert sie als Liste von Stringlisten ("Datenbasis") zurück.
|
||||
|
||||
public static List<List<String>> load(String filename) throws IOException {
|
||||
List<List<String>> result = new ArrayList<List<String>>();
|
||||
BufferedReader br = new BufferedReader(new FileReader(filename));
|
||||
for (String line=br.readLine(); line!=null; line=br.readLine())
|
||||
result.add(Arrays.asList(line.split(":")));
|
||||
br.close();
|
||||
return result;
|
||||
}
|
||||
|
||||
Kapseln Sie eine derartige Datenbasis in einer Klasse Vorlesungsverzeichnis im Paket vorlesung mit den folgenden Methoden:
|
||||
|
||||
Konstruktor
|
||||
Lädt die Datenbasis von einer Datei, deren Name als String übergeben wird. Für alle möglichen Formatfehler in der Datei soll eine TextFileFormatException mit einer aussagekräftigen Fehlermeldung geworfen werden.
|
||||
public List<String> titles()
|
||||
Liefert eine alphabetisch sortierte Liste mit den Titeln aller Vorlesungen.
|
||||
public Set<String> workaholics()
|
||||
Liefert die Menge derjenigen Dozenten, die zwei oder mehr Vorlesungen halten.
|
||||
public Map<String, List<String>> groupToTitles()
|
||||
Liefert eine Map, die Studiengruppen auf Listen von Vorlesungstiteln abbildet. Unter dem Schlüssel MT2 wäre für die oben angegebene Datenbasis zum Beispiel als Wert die Liste [Mathematik 2, Audio-/Videotechnik] zu finden.
|
||||
public Map<String, List<String>> multipleTitles()
|
||||
Liefert eine Map, die Vorlesungen auf Listen von Dozenten, die diese Vorlesungen halten, abbildet. Als Schlüssel werden in der Map nur Vorlesungen verwendet, die von unterschiedlichen Dozenten gehalten werden. Entsprechend der obigen Datenbasis würde in diesem Fall nur ein Eintrag in der Map stehen mit dem Schlüssel Mathematik 2 und dem Wert [von Coelln, Rabe] als Liste.
|
||||
public List<String> descendingTitles()
|
||||
Liefert eine nach Teilnehmerzahl absteigend(!) sortierte Liste mit den Titeln aller Vorlesungen.
|
||||
|
||||
Die Klasse Vorlesungsverzeichnis muss die Daten zu den Vorlesungen intern als Objektvariable in einer Set<Vorlesung> speichern und verarbeiten!
|
@ -1,41 +1,41 @@
|
||||
package de.joethei.hs.java2.praktikum.praktikum4;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.Socket;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class ClientRunnable implements Runnable{
|
||||
|
||||
private Socket socket;
|
||||
private BufferedReader bufferedReader;
|
||||
|
||||
public ClientRunnable(Socket socket) {
|
||||
this.socket = socket;
|
||||
try {
|
||||
bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
String input = bufferedReader.readLine();
|
||||
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
|
||||
input = input.replace(",", " ");
|
||||
List<String> arguments = Arrays.asList(input.split(" "));
|
||||
|
||||
KlausurenServer.getCommands().get(arguments.get(0).toLowerCase()).handle(bufferedWriter, arguments);
|
||||
|
||||
bufferedWriter.flush();
|
||||
bufferedWriter.close();
|
||||
socket.close();
|
||||
Thread.currentThread().interrupt();
|
||||
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
package de.joethei.hs.java2.praktikum.praktikum4;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.Socket;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class ClientRunnable implements Runnable{
|
||||
|
||||
private Socket socket;
|
||||
private BufferedReader bufferedReader;
|
||||
|
||||
public ClientRunnable(Socket socket) {
|
||||
this.socket = socket;
|
||||
try {
|
||||
bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
String input = bufferedReader.readLine();
|
||||
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
|
||||
input = input.replace(",", " ");
|
||||
List<String> arguments = Arrays.asList(input.split(" "));
|
||||
|
||||
KlausurenServer.getCommands().get(arguments.get(0).toLowerCase()).handle(bufferedWriter, arguments);
|
||||
|
||||
bufferedWriter.flush();
|
||||
bufferedWriter.close();
|
||||
socket.close();
|
||||
Thread.currentThread().interrupt();
|
||||
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +1,11 @@
|
||||
package de.joethei.hs.java2.praktikum.praktikum4;
|
||||
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
public interface CommandHandler {
|
||||
|
||||
void handle(BufferedWriter writer, List<String> args) throws IOException;
|
||||
|
||||
package de.joethei.hs.java2.praktikum.praktikum4;
|
||||
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
public interface CommandHandler {
|
||||
|
||||
void handle(BufferedWriter writer, List<String> args) throws IOException;
|
||||
|
||||
}
|
@ -1,168 +1,167 @@
|
||||
package de.joethei.hs.java2.praktikum.praktikum4;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.ServerSocket;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.*;
|
||||
|
||||
public class KlausurenServer {
|
||||
|
||||
private ConcurrentMap<String, TreeSet<Integer>> data = new ConcurrentHashMap<>();
|
||||
private ExecutorService executorService = Executors.newCachedThreadPool();
|
||||
private ServerSocket serverSocket;
|
||||
|
||||
private static Map<String, CommandHandler> commands = new HashMap<>();
|
||||
|
||||
|
||||
static Map<String, CommandHandler> getCommands() {
|
||||
return commands;
|
||||
}
|
||||
|
||||
private boolean running;
|
||||
|
||||
public KlausurenServer(int port) {
|
||||
load();
|
||||
|
||||
commands.put("test", ((writer, args) -> writer.write("Hallo Welt")));
|
||||
commands.put("delall", (writer, args) -> {
|
||||
data.clear();
|
||||
save();
|
||||
});
|
||||
commands.put("put", (writer, args) -> {
|
||||
if (args.size() >= 3) {
|
||||
TreeSet<Integer> set = new TreeSet<>();
|
||||
for (int i = 2; i <= args.size() - 1; i++) {
|
||||
try {
|
||||
set.add(Integer.parseInt(args.get(i)));
|
||||
} catch (NumberFormatException ex) {
|
||||
}
|
||||
}
|
||||
writer.write("1 ");
|
||||
if (data.containsKey(args.get(1).toLowerCase())) {
|
||||
writer.write(data.get(args.get(1).toLowerCase()).toString().replace('[', ' ').replace(']', ' ').replaceAll(" ", ""));
|
||||
}
|
||||
data.put(args.get(1).toLowerCase(), set);
|
||||
save();
|
||||
} else {
|
||||
writer.write("0");
|
||||
}
|
||||
});
|
||||
commands.put("getall", (writer, args) -> {
|
||||
if (!data.isEmpty()) {
|
||||
writer.write("1 ");
|
||||
ConcurrentMap<String, TreeSet<Integer>> set = new ConcurrentHashMap<>(data);
|
||||
Set<TreeSet<Integer>> result = new HashSet<>();
|
||||
|
||||
set.forEach((key, value) -> set.forEach((s, integers) -> {
|
||||
if(!value.equals(integers)) {
|
||||
if (integers.containsAll(value))
|
||||
set.remove(key);
|
||||
}
|
||||
}));
|
||||
|
||||
set.forEach((key, value) -> result.add(value));
|
||||
|
||||
result.removeIf(TreeSet::isEmpty);
|
||||
|
||||
writer.write(result.toString().substring(1, result.toString().length()-1).replace(" ", ""));
|
||||
} else {
|
||||
writer.write("0");
|
||||
}
|
||||
});
|
||||
commands.put("get", (writer, args) -> {
|
||||
if (args.size() == 2) {
|
||||
if (data.containsKey(args.get(1).toLowerCase())) {
|
||||
writer.write("1 " + data.get(args.get(1).toLowerCase()).toString().replace('[', ' ').replace(']', ' ').replace(" ", ""));
|
||||
} else writer.write("0");
|
||||
} else writer.write("0");
|
||||
});
|
||||
commands.put("del", (writer, args) -> {
|
||||
if (args.size() == 2) {
|
||||
if (data.containsKey(args.get(1).toLowerCase())) {
|
||||
writer.write("1 " + data.remove(args.get(1).toLowerCase()).toString().replace('[', ' ').replace(']', ' ').replace(" ", ""));
|
||||
save();
|
||||
} else writer.write("0");
|
||||
} else writer.write("0");
|
||||
});
|
||||
commands.put("stop", ((writer, args) -> {
|
||||
writer.write("1");
|
||||
save();
|
||||
running = false;
|
||||
}));
|
||||
running = true;
|
||||
Runnable runnable = () -> {
|
||||
try {
|
||||
serverSocket = new ServerSocket(port);
|
||||
System.out.println("waiting for clients");
|
||||
while (running) {
|
||||
executorService.submit(new ClientRunnable(serverSocket.accept()));
|
||||
}
|
||||
executorService.shutdown();
|
||||
try {
|
||||
executorService.awaitTermination(1, TimeUnit.MINUTES);
|
||||
} catch (InterruptedException e) {
|
||||
Thread.currentThread().interrupt();
|
||||
}
|
||||
|
||||
serverSocket.close();
|
||||
System.out.println("server shutdown");
|
||||
Thread.currentThread().interrupt();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
};
|
||||
Thread thread = new Thread(runnable);
|
||||
thread.start();
|
||||
}
|
||||
|
||||
synchronized void load() {
|
||||
FileReader fileReader = null;
|
||||
try {
|
||||
fileReader = new FileReader(getClass().getClassLoader().getResource("praktikum4/data.txt").getFile());
|
||||
} catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
try (BufferedReader br = new BufferedReader(Objects.requireNonNull(fileReader))) {
|
||||
for (String line = br.readLine(); line != null; line = br.readLine()) {
|
||||
TreeSet<Integer> set = new TreeSet<>();
|
||||
String[] array = line.split(":");
|
||||
for (int i = 1; i <= array.length - 1; i++) {
|
||||
set.add(Integer.parseInt(array[i]));
|
||||
}
|
||||
data.put(array[0], set);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
synchronized void save() {
|
||||
FileOutputStream fileWriter;
|
||||
PrintWriter printWriter = null;
|
||||
try {
|
||||
fileWriter = new FileOutputStream(getClass().getClassLoader().getResource("praktikum4/data.txt").getFile());
|
||||
printWriter = new PrintWriter(fileWriter);
|
||||
|
||||
for (Map.Entry<String, TreeSet<Integer>> entry : data.entrySet()) {
|
||||
StringBuilder tmp = new StringBuilder(entry.getKey());
|
||||
for (int integer : entry.getValue()) {
|
||||
tmp.append(":").append(integer);
|
||||
}
|
||||
printWriter.println(tmp.toString());
|
||||
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
assert printWriter != null;
|
||||
printWriter.close();
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
new KlausurenServer(Integer.parseInt(args[0]));
|
||||
}
|
||||
package de.joethei.hs.java2.praktikum.praktikum4;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.ServerSocket;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.*;
|
||||
|
||||
public class KlausurenServer {
|
||||
|
||||
private ConcurrentMap<String, TreeSet<Integer>> data = new ConcurrentHashMap<>();
|
||||
private ExecutorService executorService = Executors.newCachedThreadPool();
|
||||
private ServerSocket serverSocket;
|
||||
|
||||
private static Map<String, CommandHandler> commands = new HashMap<>();
|
||||
Hallo Welt
|
||||
static Map<String, CommandHandler> getCommands() {
|
||||
return commands;
|
||||
}
|
||||
|
||||
private boolean running;
|
||||
|
||||
public KlausurenServer(int port) {
|
||||
load();
|
||||
|
||||
commands.put("test", ((writer, args) -> writer.write("Hallo Welt")));
|
||||
commands.put("delall", (writer, args) -> {
|
||||
data.clear();
|
||||
save();
|
||||
});
|
||||
commands.put("put", (writer, args) -> {
|
||||
if (args.size() >= 3) {
|
||||
TreeSet<Integer> set = new TreeSet<>();
|
||||
for (int i = 2; i <= args.size() - 1; i++) {
|
||||
try {
|
||||
set.add(Integer.parseInt(args.get(i)));
|
||||
} catch (NumberFormatException ex) {
|
||||
}
|
||||
}
|
||||
writer.write("1 ");
|
||||
if (data.containsKey(args.get(1).toLowerCase())) {
|
||||
writer.write(data.get(args.get(1).toLowerCase()).toString().replace('[', ' ').replace(']', ' ').replaceAll(" ", ""));
|
||||
}
|
||||
data.put(args.get(1).toLowerCase(), set);
|
||||
save();
|
||||
} else {
|
||||
writer.write("0");
|
||||
}
|
||||
});
|
||||
commands.put("getall", (writer, args) -> {
|
||||
if (!data.isEmpty()) {
|
||||
writer.write("1 ");
|
||||
ConcurrentMap<String, TreeSet<Integer>> set = new ConcurrentHashMap<>(data);
|
||||
Set<TreeSet<Integer>> result = new HashSet<>();
|
||||
|
||||
set.forEach((key, value) -> set.forEach((s, integers) -> {
|
||||
if(!value.equals(integers)) {
|
||||
if (integers.containsAll(value))
|
||||
set.remove(key);
|
||||
}
|
||||
}));
|
||||
|
||||
set.forEach((key, value) -> result.add(value));
|
||||
|
||||
result.removeIf(TreeSet::isEmpty);
|
||||
|
||||
writer.write(result.toString().substring(1, result.toString().length()-1).replace(" ", ""));
|
||||
} else {
|
||||
writer.write("0");
|
||||
}
|
||||
});
|
||||
commands.put("get", (writer, args) -> {
|
||||
if (args.size() == 2) {
|
||||
if (data.containsKey(args.get(1).toLowerCase())) {
|
||||
writer.write("1 " + data.get(args.get(1).toLowerCase()).toString().replace('[', ' ').replace(']', ' ').replace(" ", ""));
|
||||
} else writer.write("0");
|
||||
} else writer.write("0");
|
||||
});
|
||||
commands.put("del", (writer, args) -> {
|
||||
if (args.size() == 2) {
|
||||
if (data.containsKey(args.get(1).toLowerCase())) {
|
||||
writer.write("1 " + data.remove(args.get(1).toLowerCase()).toString().replace('[', ' ').replace(']', ' ').replace(" ", ""));
|
||||
save();
|
||||
} else writer.write("0");
|
||||
} else writer.write("0");
|
||||
});
|
||||
commands.put("stop", ((writer, args) -> {
|
||||
writer.write("1");
|
||||
save();
|
||||
running = false;
|
||||
}));
|
||||
running = true;
|
||||
Runnable runnable = () -> {
|
||||
try {
|
||||
serverSocket = new ServerSocket(port);
|
||||
System.out.println("waiting for clients");
|
||||
while (running) {
|
||||
executorService.submit(new ClientRunnable(serverSocket.accept()));
|
||||
}
|
||||
executorService.shutdown();
|
||||
try {
|
||||
executorService.awaitTermination(1, TimeUnit.MINUTES);
|
||||
} catch (InterruptedException e) {
|
||||
Thread.currentThread().interrupt();
|
||||
}
|
||||
|
||||
serverSocket.close();
|
||||
System.out.println("server shutdown");
|
||||
Thread.currentThread().interrupt();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
};
|
||||
Thread thread = new Thread(runnable);
|
||||
thread.start();
|
||||
}
|
||||
|
||||
synchronized void load() {
|
||||
FileReader fileReader = null;
|
||||
try {
|
||||
fileReader = new FileReader(getClass().getClassLoader().getResource("praktikum4/data.txt").getFile());
|
||||
} catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
try (BufferedReader br = new BufferedReader(Objects.requireNonNull(fileReader))) {
|
||||
for (String line = br.readLine(); line != null; line = br.readLine()) {
|
||||
TreeSet<Integer> set = new TreeSet<>();
|
||||
String[] array = line.split(":");
|
||||
for (int i = 1; i <= array.length - 1; i++) {
|
||||
set.add(Integer.parseInt(array[i]));
|
||||
}
|
||||
data.put(array[0], set);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
synchronized void save() {
|
||||
FileOutputStream fileWriter;
|
||||
PrintWriter printWriter = null;
|
||||
try {
|
||||
fileWriter = new FileOutputStream(getClass().getClassLoader().getResource("praktikum4/data.txt").getFile());
|
||||
printWriter = new PrintWriter(fileWriter);
|
||||
|
||||
for (Map.Entry<String, TreeSet<Integer>> entry : data.entrySet()) {
|
||||
StringBuilder tmp = new StringBuilder(entry.getKey());
|
||||
for (int integer : entry.getValue()) {
|
||||
tmp.append(":").append(integer);
|
||||
}
|
||||
printWriter.println(tmp.toString());
|
||||
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
assert printWriter != null;
|
||||
printWriter.close();
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
new KlausurenServer(Integer.parseInt(args[0]));
|
||||
}
|
||||
}
|
@ -1,75 +1,75 @@
|
||||
Entwickeln Sie eine Klasse KlausurenServer, mit der verwaltetet werden kann,
|
||||
welche Klausuren ein(e) Student/-in mitschreiben möchte.
|
||||
Zu einer Mail-Adresse werden dabei die IDs der Klausuren gespeichert, z.B.
|
||||
|
||||
max.mueller@stud.hs-emden-leer.de: 34, 45, 56
|
||||
peter.meier@stud.hs-emden-leer.de: 1, 8, 34, 67
|
||||
axel.maier@stud.hs-emden-leer.de: 34, 56
|
||||
...
|
||||
|
||||
Intern werden diese Daten als (key,value)-Paare in einer Map gespeichert, wobei als key die Mail-Adresse verwendet wird.
|
||||
Der Konstruktor der Klasse KlausurenServer erhält als Parameter den Port, auf dem Anfragen entgegengenommen werden.
|
||||
Jede Anfrage besteht aus einer Textzeile, die eines der nachfolgend beschriebenen Kommandos enthalten darf,
|
||||
wobei die Kommandos groß oder klein geschrieben werden können.
|
||||
Als Antwort wird eine Textzeile zurückgeschickt, die immer mit 0 (Misserfolg) oder 1 (Erfolg) beginnt.
|
||||
Die (key,value)-Paare sollen auch nach einem Stoppen und Starten des Servers erhalten bleiben
|
||||
und müssen somit in einer Datei gespeichert werden.
|
||||
|
||||
PUT key newvalue -> 1 oldvalue
|
||||
Trägt unter dem Schlüssel key den Wert newvalue ein. Die Antwort besteht aus einer 1 und dem alten Wert des Schlüssels.
|
||||
Beim ersten Eintrag ist oldvalue ein leerer String. Falls newvalue Leerzeichen enthält, sollen diese entfernt werden.
|
||||
GET key -> 1 value oder 0
|
||||
Liefert den Wert, der unter dem Schlüssel key eingetragen ist.
|
||||
Die IDs der Klausuren werden dabei immer aufsteigend sortiert zurückgegeben.
|
||||
Wenn der Schlüssel nicht bekannt ist, ist die Antwort 0.
|
||||
DEL key -> 1 oldvalue oder 0
|
||||
Löscht Schlüssel und Wert und liefert den gelöschten Wert zurück.
|
||||
Wenn der Schlüssel nicht bekannt war, wird 0 zurückgeliefert.
|
||||
GETALL -> 1 value oder 0
|
||||
Liefert eine Auflistung aller Klausurenwahlen.
|
||||
Wenn die Wahl eines/einer Studierenden in der Wahl eines/einer anderen Studierenden enthalten ist,
|
||||
fällt diese für diese Anfrage weg.
|
||||
Beim obigen Beispiel würde die Wahl von Axel Maier entfallen,
|
||||
da diese Klausuren auch von Max Mueller gewählt wurden. value soll in folgender Form zurückgegeben werden:
|
||||
[34,45,56],[1,8,34,67]
|
||||
Falls (noch) keine Klausurenwahlen vorhanden sind, wird 0 zurückgegeben.
|
||||
STOP -> 1
|
||||
Beendet den Dienst und somit den Server.
|
||||
|
||||
Eine main-Methode liest von der Kommandozeile einen Port ein, legt ein KlausurenServer-Objekt an und startet den Server.
|
||||
Der KlausurenServer arbeitet ähnlich wie ein Webserver.
|
||||
Er verarbeitet jede Anfrage einzeln in einem eigenen Thread(!) und unabhängig von anderen Anfragen.
|
||||
Die Verbindung zum Client wird nach jeder Antwort wieder geschlossen.
|
||||
Ein Client, der mehrere Anfragen abwickeln möchte, muss für jede Anfrage eine neue Verbindung zum Server aufnehmen.
|
||||
Ein solches Protokoll wird als "zustandslos" bezeichnet, weil mit jeder Anfrage eine neue Kommunikationssequenz beginnt,
|
||||
die keine Informationen aus früheren Anfragen voraussetzt.
|
||||
Praktisch alle Betriebssysteme enthalten einen Telnet-Client, mit dem der Klausurenserver getestet werden kann.
|
||||
Dieser muss bei Windows-Systemen aber ggfls. nachinstalliert werden.
|
||||
Das folgende Beispiel zeigt den Dialog auf einem Unix-System.
|
||||
Der KlausurenServer wurde in einem anderen Terminal gestartet und läuft bereits.
|
||||
Zur Vereinfachung sind die Protokollausgaben des Telnet-Clients ausgeblendet:
|
||||
|
||||
$ telnet localhost 2000
|
||||
put max.mueller@stud.hs-emden-leer.de 34,45,56
|
||||
1
|
||||
$ telnet localhost 2000
|
||||
put axel.maier@stud.hs-emden-leer.de 34, 56
|
||||
1
|
||||
$ telnet localhost 2000
|
||||
getall
|
||||
1 [34,45,56]
|
||||
$ telnet localhost 2000
|
||||
put max.mueller@stud.hs-emden-leer.de 34, 45
|
||||
1 34,45,56
|
||||
$ telnet localhost 2000
|
||||
get max.mueller@stud.hs-emden-leer.de
|
||||
1 34,45
|
||||
$ telnet localhost 2000
|
||||
del max.mueller@stud.hs-emden-leer.de
|
||||
1 34,45
|
||||
$ telnet localhost 2000
|
||||
get max.mueller@stud.hs-emden-leer.de
|
||||
0
|
||||
$ telnet localhost 2000
|
||||
stop
|
||||
Entwickeln Sie eine Klasse KlausurenServer, mit der verwaltetet werden kann,
|
||||
welche Klausuren ein(e) Student/-in mitschreiben möchte.
|
||||
Zu einer Mail-Adresse werden dabei die IDs der Klausuren gespeichert, z.B.
|
||||
|
||||
max.mueller@stud.hs-emden-leer.de: 34, 45, 56
|
||||
peter.meier@stud.hs-emden-leer.de: 1, 8, 34, 67
|
||||
axel.maier@stud.hs-emden-leer.de: 34, 56
|
||||
...
|
||||
|
||||
Intern werden diese Daten als (key,value)-Paare in einer Map gespeichert, wobei als key die Mail-Adresse verwendet wird.
|
||||
Der Konstruktor der Klasse KlausurenServer erhält als Parameter den Port, auf dem Anfragen entgegengenommen werden.
|
||||
Jede Anfrage besteht aus einer Textzeile, die eines der nachfolgend beschriebenen Kommandos enthalten darf,
|
||||
wobei die Kommandos groß oder klein geschrieben werden können.
|
||||
Als Antwort wird eine Textzeile zurückgeschickt, die immer mit 0 (Misserfolg) oder 1 (Erfolg) beginnt.
|
||||
Die (key,value)-Paare sollen auch nach einem Stoppen und Starten des Servers erhalten bleiben
|
||||
und müssen somit in einer Datei gespeichert werden.
|
||||
|
||||
PUT key newvalue -> 1 oldvalue
|
||||
Trägt unter dem Schlüssel key den Wert newvalue ein. Die Antwort besteht aus einer 1 und dem alten Wert des Schlüssels.
|
||||
Beim ersten Eintrag ist oldvalue ein leerer String. Falls newvalue Leerzeichen enthält, sollen diese entfernt werden.
|
||||
GET key -> 1 value oder 0
|
||||
Liefert den Wert, der unter dem Schlüssel key eingetragen ist.
|
||||
Die IDs der Klausuren werden dabei immer aufsteigend sortiert zurückgegeben.
|
||||
Wenn der Schlüssel nicht bekannt ist, ist die Antwort 0.
|
||||
DEL key -> 1 oldvalue oder 0
|
||||
Löscht Schlüssel und Wert und liefert den gelöschten Wert zurück.
|
||||
Wenn der Schlüssel nicht bekannt war, wird 0 zurückgeliefert.
|
||||
GETALL -> 1 value oder 0
|
||||
Liefert eine Auflistung aller Klausurenwahlen.
|
||||
Wenn die Wahl eines/einer Studierenden in der Wahl eines/einer anderen Studierenden enthalten ist,
|
||||
fällt diese für diese Anfrage weg.
|
||||
Beim obigen Beispiel würde die Wahl von Axel Maier entfallen,
|
||||
da diese Klausuren auch von Max Mueller gewählt wurden. value soll in folgender Form zurückgegeben werden:
|
||||
[34,45,56],[1,8,34,67]
|
||||
Falls (noch) keine Klausurenwahlen vorhanden sind, wird 0 zurückgegeben.
|
||||
STOP -> 1
|
||||
Beendet den Dienst und somit den Server.
|
||||
|
||||
Eine main-Methode liest von der Kommandozeile einen Port ein, legt ein KlausurenServer-Objekt an und startet den Server.
|
||||
Der KlausurenServer arbeitet ähnlich wie ein Webserver.
|
||||
Er verarbeitet jede Anfrage einzeln in einem eigenen Thread(!) und unabhängig von anderen Anfragen.
|
||||
Die Verbindung zum Client wird nach jeder Antwort wieder geschlossen.
|
||||
Ein Client, der mehrere Anfragen abwickeln möchte, muss für jede Anfrage eine neue Verbindung zum Server aufnehmen.
|
||||
Ein solches Protokoll wird als "zustandslos" bezeichnet, weil mit jeder Anfrage eine neue Kommunikationssequenz beginnt,
|
||||
die keine Informationen aus früheren Anfragen voraussetzt.
|
||||
Praktisch alle Betriebssysteme enthalten einen Telnet-Client, mit dem der Klausurenserver getestet werden kann.
|
||||
Dieser muss bei Windows-Systemen aber ggfls. nachinstalliert werden.
|
||||
Das folgende Beispiel zeigt den Dialog auf einem Unix-System.
|
||||
Der KlausurenServer wurde in einem anderen Terminal gestartet und läuft bereits.
|
||||
Zur Vereinfachung sind die Protokollausgaben des Telnet-Clients ausgeblendet:
|
||||
|
||||
$ telnet localhost 2000
|
||||
put max.mueller@stud.hs-emden-leer.de 34,45,56
|
||||
1
|
||||
$ telnet localhost 2000
|
||||
put axel.maier@stud.hs-emden-leer.de 34, 56
|
||||
1
|
||||
$ telnet localhost 2000
|
||||
getall
|
||||
1 [34,45,56]
|
||||
$ telnet localhost 2000
|
||||
put max.mueller@stud.hs-emden-leer.de 34, 45
|
||||
1 34,45,56
|
||||
$ telnet localhost 2000
|
||||
get max.mueller@stud.hs-emden-leer.de
|
||||
1 34,45
|
||||
$ telnet localhost 2000
|
||||
del max.mueller@stud.hs-emden-leer.de
|
||||
1 34,45
|
||||
$ telnet localhost 2000
|
||||
get max.mueller@stud.hs-emden-leer.de
|
||||
0
|
||||
$ telnet localhost 2000
|
||||
stop
|
||||
1
|
@ -1,7 +1,7 @@
|
||||
I2:Java 2:Rump:100
|
||||
I2:Algorithmen und Datenstrukturen:Totzauer:30
|
||||
MT2::von Coelln:60
|
||||
MT2:Audio-/Videotechnik:Lemke:50
|
||||
E2:Mathematik 2:Rabe:20
|
||||
I4:Rechnerarchitekturen:von Coelln:45
|
||||
I2:Java 2:Rump:100
|
||||
I2:Algorithmen und Datenstrukturen:Totzauer:30
|
||||
MT2::von Coelln:60
|
||||
MT2:Audio-/Videotechnik:Lemke:50
|
||||
E2:Mathematik 2:Rabe:20
|
||||
I4:Rechnerarchitekturen:von Coelln:45
|
||||
I4:Internet-Technologien:Rump:40
|
@ -1,7 +1,7 @@
|
||||
I2:Java 2:Rump:100
|
||||
I2:Algorithmen und Datenstrukturen:Totzauer:80
|
||||
MT2:Mathematik 2:von Coelln:60
|
||||
MT2:Audio-/Videotechnik:Lemke:5F
|
||||
E2:Mathematik 2:Rabe:70
|
||||
I4:Rechnerarchitekturen:von Coelln:45
|
||||
I2:Java 2:Rump:100
|
||||
I2:Algorithmen und Datenstrukturen:Totzauer:80
|
||||
MT2:Mathematik 2:von Coelln:60
|
||||
MT2:Audio-/Videotechnik:Lemke:5F
|
||||
E2:Mathematik 2:Rabe:70
|
||||
I4:Rechnerarchitekturen:von Coelln:45
|
||||
I4:Internet-Technologien:Rump:40
|
@ -1,7 +1,7 @@
|
||||
I2:Java 2:Rump:100
|
||||
I2:Algorithmen und Datenstrukturen:Totzauer:80
|
||||
MT2:Mathematik 2:von Coelln:60
|
||||
MT2:Audio-/Videotechnik:Lemke:50
|
||||
E2:Mathematik 2:Rabe:70
|
||||
I4:Rechnerarchitekturen:von Coelln:45
|
||||
I2:Java 2:Rump:100
|
||||
I2:Algorithmen und Datenstrukturen:Totzauer:80
|
||||
MT2:Mathematik 2:von Coelln:60
|
||||
MT2:Audio-/Videotechnik:Lemke:50
|
||||
E2:Mathematik 2:Rabe:70
|
||||
I4:Rechnerarchitekturen:von Coelln:45
|
||||
I4:Internet-Technologien:Rump:40
|
@ -1,65 +1,65 @@
|
||||
package de.joethei.hs.java2.tests;
|
||||
|
||||
import de.joethei.hs.java2.praktikum.praktikum2.CharCollection;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class CharCollectionTest {
|
||||
|
||||
@Test
|
||||
public void constructors() {
|
||||
assertEquals(new CharCollection("Hallo"), new CharCollection('H', 'a', 'l', 'l', 'o'));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void size() {
|
||||
assertEquals(5, new CharCollection("Hallo").size());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void count() {
|
||||
assertEquals(2, new CharCollection("Hallo").count('l'));
|
||||
assertEquals(1, new CharCollection("Hallo").count('a'));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void different() {
|
||||
assertEquals(4, new CharCollection("Hallo").different());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void top() {
|
||||
assertEquals('l', new CharCollection("Hallo").top());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void toStringTest() {
|
||||
assertEquals("(H, a, l, l, o, W, e, l, t)", new CharCollection("HalloWelt").toString());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void moreThan() {
|
||||
assertEquals(new CharCollection("lll"), new CharCollection("Hallol").moreThan(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals() {
|
||||
assertEquals(new CharCollection("llo"), new CharCollection("lol"));
|
||||
assertNotEquals(new CharCollection("Hallo"), "Hallo");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void except() {
|
||||
assertEquals(new CharCollection("Halo"), new CharCollection("Hallo").except(new CharCollection("l")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isSubsect() {
|
||||
assertTrue(new CharCollection("Hallo").isSubset(new CharCollection("Hao")));
|
||||
}
|
||||
|
||||
package de.joethei.hs.java2.tests;
|
||||
|
||||
import de.joethei.hs.java2.praktikum.praktikum2.CharCollection;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class CharCollectionTest {
|
||||
|
||||
@Test
|
||||
public void constructors() {
|
||||
assertEquals(new CharCollection("Hallo"), new CharCollection('H', 'a', 'l', 'l', 'o'));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void size() {
|
||||
assertEquals(5, new CharCollection("Hallo").size());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void count() {
|
||||
assertEquals(2, new CharCollection("Hallo").count('l'));
|
||||
assertEquals(1, new CharCollection("Hallo").count('a'));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void different() {
|
||||
assertEquals(4, new CharCollection("Hallo").different());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void top() {
|
||||
assertEquals('l', new CharCollection("Hallo").top());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void toStringTest() {
|
||||
assertEquals("(H, a, l, l, o, W, e, l, t)", new CharCollection("HalloWelt").toString());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void moreThan() {
|
||||
assertEquals(new CharCollection("lll"), new CharCollection("Hallol").moreThan(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void equals() {
|
||||
assertEquals(new CharCollection("llo"), new CharCollection("lol"));
|
||||
assertNotEquals(new CharCollection("Hallo"), "Hallo");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void except() {
|
||||
assertEquals(new CharCollection("Halo"), new CharCollection("Hallo").except(new CharCollection("l")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isSubsect() {
|
||||
assertTrue(new CharCollection("Hallo").isSubset(new CharCollection("Hao")));
|
||||
}
|
||||
|
||||
}
|
@ -1,113 +1,113 @@
|
||||
package de.joethei.hs.java2.tests;
|
||||
|
||||
import de.joethei.hs.java2.praktikum.praktikum2.CharCollection;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class CharCollectionTest2 {
|
||||
|
||||
private CharCollection a, b, c, d;
|
||||
|
||||
@Before
|
||||
public void setUp()
|
||||
{
|
||||
a = new CharCollection('A', 'N', 'A', 'N', 'A', 'S');
|
||||
b = new CharCollection('H', 'O', 'C', 'H', 'S', 'C', 'H', 'U', 'L', 'E');
|
||||
c = new CharCollection("AAANNS");
|
||||
d = new CharCollection();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Laenge(){
|
||||
assertEquals(6,a.size());
|
||||
assertEquals(10,b.size());
|
||||
assertEquals(6,c.size());
|
||||
assertEquals(0,d.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Anzahl(){
|
||||
assertEquals(2,a.count('N'));
|
||||
assertEquals(0,a.count('X'));
|
||||
assertEquals(3,b.count('H'));
|
||||
assertEquals(1,c.count('S'));
|
||||
assertEquals(0,d.count('H'));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Verschieden(){
|
||||
assertEquals(3,a.different());
|
||||
assertEquals(7,b.different());
|
||||
assertEquals(3,c.different());
|
||||
assertEquals(0,d.different());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Haeufigster(){
|
||||
assertEquals('A',a.top());
|
||||
assertEquals('H',b.top());
|
||||
assertEquals('A',c.top());
|
||||
assertEquals(0,d.top());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Vergleich(){
|
||||
assertEquals(a, c);
|
||||
assertEquals(b, new CharCollection("CCEHHHLOSU"));
|
||||
assertNotEquals(b, new CharCollection("CEHLOSU"));
|
||||
assertEquals(d, new CharCollection(""));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Ausgabe(){
|
||||
assertEquals(a.toString().length(),c.toString().length());
|
||||
assertEquals(b.toString().length(),new CharCollection("CCEHHHLOSU").toString().length());
|
||||
assertEquals("()",d.toString());
|
||||
|
||||
char[] aa = a.toString().toCharArray();
|
||||
char[] ca = c.toString().toCharArray();
|
||||
Arrays.sort(aa);
|
||||
Arrays.sort(ca);
|
||||
assertTrue(Arrays.equals(aa, ca));
|
||||
|
||||
char[] ba = b.toString().toCharArray();
|
||||
char[] b2a = "(C, C, H, H, H, L, O, E, S, U)".toCharArray();
|
||||
Arrays.sort(ba);
|
||||
Arrays.sort(b2a);
|
||||
assertTrue(Arrays.equals(ba, b2a));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Mindestens(){
|
||||
assertEquals(a.moreThan(1), new CharCollection("AAANN"));
|
||||
assertEquals(a.moreThan(2), new CharCollection("AAA"));
|
||||
assertEquals("(A, A, A)",a.moreThan(2).toString());
|
||||
assertEquals(b.moreThan(1), new CharCollection("CCHHH"));
|
||||
assertEquals(b.moreThan(3), new CharCollection(""));
|
||||
assertEquals("()",b.moreThan(3).toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Differenz(){
|
||||
assertEquals(a.except(new CharCollection("NASE")), new CharCollection("AAN"));
|
||||
assertEquals(a.except(new CharCollection("KIWI")), new CharCollection("ANANAS"));
|
||||
assertEquals(a.except(new CharCollection()), new CharCollection("ANANAS"));
|
||||
assertEquals(a.except(new CharCollection("ANANAS")), new CharCollection());
|
||||
assertEquals(b.except(new CharCollection("CHHO")), new CharCollection("SCHULE"));
|
||||
assertEquals(c.except(new CharCollection("HOSIANNA")), new CharCollection('A'));
|
||||
assertEquals(d.except(new CharCollection("ABCD")), new CharCollection());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Untermenge(){
|
||||
assertTrue(a.isSubset(new CharCollection("ANANAS")));
|
||||
assertTrue(a.isSubset(new CharCollection("NASA")));
|
||||
assertTrue(a.isSubset(new CharCollection("")));
|
||||
assertFalse(a.isSubset(new CharCollection("NASE")));
|
||||
assertFalse(a.isSubset(new CharCollection("AAAA")));
|
||||
}
|
||||
}
|
||||
package de.joethei.hs.java2.tests;
|
||||
|
||||
import de.joethei.hs.java2.praktikum.praktikum2.CharCollection;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class CharCollectionTest2 {
|
||||
|
||||
private CharCollection a, b, c, d;
|
||||
|
||||
@Before
|
||||
public void setUp()
|
||||
{
|
||||
a = new CharCollection('A', 'N', 'A', 'N', 'A', 'S');
|
||||
b = new CharCollection('H', 'O', 'C', 'H', 'S', 'C', 'H', 'U', 'L', 'E');
|
||||
c = new CharCollection("AAANNS");
|
||||
d = new CharCollection();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Laenge(){
|
||||
assertEquals(6,a.size());
|
||||
assertEquals(10,b.size());
|
||||
assertEquals(6,c.size());
|
||||
assertEquals(0,d.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Anzahl(){
|
||||
assertEquals(2,a.count('N'));
|
||||
assertEquals(0,a.count('X'));
|
||||
assertEquals(3,b.count('H'));
|
||||
assertEquals(1,c.count('S'));
|
||||
assertEquals(0,d.count('H'));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Verschieden(){
|
||||
assertEquals(3,a.different());
|
||||
assertEquals(7,b.different());
|
||||
assertEquals(3,c.different());
|
||||
assertEquals(0,d.different());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Haeufigster(){
|
||||
assertEquals('A',a.top());
|
||||
assertEquals('H',b.top());
|
||||
assertEquals('A',c.top());
|
||||
assertEquals(0,d.top());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Vergleich(){
|
||||
assertEquals(a, c);
|
||||
assertEquals(b, new CharCollection("CCEHHHLOSU"));
|
||||
assertNotEquals(b, new CharCollection("CEHLOSU"));
|
||||
assertEquals(d, new CharCollection(""));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Ausgabe(){
|
||||
assertEquals(a.toString().length(),c.toString().length());
|
||||
assertEquals(b.toString().length(),new CharCollection("CCEHHHLOSU").toString().length());
|
||||
assertEquals("()",d.toString());
|
||||
|
||||
char[] aa = a.toString().toCharArray();
|
||||
char[] ca = c.toString().toCharArray();
|
||||
Arrays.sort(aa);
|
||||
Arrays.sort(ca);
|
||||
assertTrue(Arrays.equals(aa, ca));
|
||||
|
||||
char[] ba = b.toString().toCharArray();
|
||||
char[] b2a = "(C, C, H, H, H, L, O, E, S, U)".toCharArray();
|
||||
Arrays.sort(ba);
|
||||
Arrays.sort(b2a);
|
||||
assertTrue(Arrays.equals(ba, b2a));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Mindestens(){
|
||||
assertEquals(a.moreThan(1), new CharCollection("AAANN"));
|
||||
assertEquals(a.moreThan(2), new CharCollection("AAA"));
|
||||
assertEquals("(A, A, A)",a.moreThan(2).toString());
|
||||
assertEquals(b.moreThan(1), new CharCollection("CCHHH"));
|
||||
assertEquals(b.moreThan(3), new CharCollection(""));
|
||||
assertEquals("()",b.moreThan(3).toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Differenz(){
|
||||
assertEquals(a.except(new CharCollection("NASE")), new CharCollection("AAN"));
|
||||
assertEquals(a.except(new CharCollection("KIWI")), new CharCollection("ANANAS"));
|
||||
assertEquals(a.except(new CharCollection()), new CharCollection("ANANAS"));
|
||||
assertEquals(a.except(new CharCollection("ANANAS")), new CharCollection());
|
||||
assertEquals(b.except(new CharCollection("CHHO")), new CharCollection("SCHULE"));
|
||||
assertEquals(c.except(new CharCollection("HOSIANNA")), new CharCollection('A'));
|
||||
assertEquals(d.except(new CharCollection("ABCD")), new CharCollection());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Untermenge(){
|
||||
assertTrue(a.isSubset(new CharCollection("ANANAS")));
|
||||
assertTrue(a.isSubset(new CharCollection("NASA")));
|
||||
assertTrue(a.isSubset(new CharCollection("")));
|
||||
assertFalse(a.isSubset(new CharCollection("NASE")));
|
||||
assertFalse(a.isSubset(new CharCollection("AAAA")));
|
||||
}
|
||||
}
|
||||
|
@ -1,86 +1,86 @@
|
||||
package de.joethei.hs.java2.tests;
|
||||
|
||||
import de.joethei.hs.java2.praktikum.praktikum1.GrosseZahl;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class GrosseZahlTest {
|
||||
|
||||
@Test
|
||||
public void constructors() {
|
||||
assertEquals(new GrosseZahl("1456"), new GrosseZahl(1456));
|
||||
assertNotEquals(new GrosseZahl("1234"), new GrosseZahl(1233));
|
||||
assertNotEquals(new GrosseZahl(14), 14);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void length() {
|
||||
assertEquals(4, new GrosseZahl("1234").length());
|
||||
assertNotEquals(5, new GrosseZahl(1234).length());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void numberAt() {
|
||||
assertEquals(5, new GrosseZahl("125").numberAt(2));
|
||||
assertNotEquals(5, new GrosseZahl(125).numberAt(1));
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void add() {
|
||||
assertEquals(new GrosseZahl(42), new GrosseZahl("40").add(new GrosseZahl(2)));
|
||||
assertEquals(new GrosseZahl("42"), new GrosseZahl(40).add(new GrosseZahl(2)));
|
||||
assertNotEquals(new GrosseZahl(43), new GrosseZahl("40").add(new GrosseZahl(2)));
|
||||
assertEquals(new GrosseZahl(200), new GrosseZahl(190).add(new GrosseZahl("10")));
|
||||
assertEquals(new GrosseZahl(200), new GrosseZahl(10).add(new GrosseZahl(190)));
|
||||
assertEquals(new GrosseZahl(400), new GrosseZahl(50).add(new GrosseZahl(350)));
|
||||
assertEquals(new GrosseZahl(4000), new GrosseZahl(500).add(new GrosseZahl(3500)));
|
||||
assertEquals(new GrosseZahl(200), new GrosseZahl("198").add(new GrosseZahl(2)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void sub() {
|
||||
assertEquals(new GrosseZahl(42), new GrosseZahl(100).sub(new GrosseZahl(58)));
|
||||
assertNotEquals(new GrosseZahl(43), new GrosseZahl(100).sub(new GrosseZahl(58)));
|
||||
assertEquals(new GrosseZahl(100), new GrosseZahl(150).sub(new GrosseZahl(50)));
|
||||
assertEquals(new GrosseZahl(0), new GrosseZahl(10).sub(new GrosseZahl("10")));
|
||||
assertEquals(new GrosseZahl(0), new GrosseZahl(10).sub(new GrosseZahl(15)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void mult() {
|
||||
assertEquals(new GrosseZahl(15), new GrosseZahl("5").mult(new GrosseZahl(3)));
|
||||
assertNotEquals(new GrosseZahl("15"), new GrosseZahl("4").mult(new GrosseZahl(3)));
|
||||
assertEquals(new GrosseZahl(90000), new GrosseZahl(9).mult(new GrosseZahl(10000)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void less() {
|
||||
assertTrue(new GrosseZahl("1234").less(new GrosseZahl("12345")));
|
||||
assertFalse(new GrosseZahl("12345").less(new GrosseZahl("1234")));
|
||||
assertFalse(new GrosseZahl("1234").less(new GrosseZahl("1234")));
|
||||
assertFalse(new GrosseZahl("1234").less(new GrosseZahl("1233")));
|
||||
assertTrue(new GrosseZahl(1233).less(new GrosseZahl(1234)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void toStringTest() {
|
||||
assertEquals("45", new GrosseZahl(45).toString());
|
||||
assertEquals("45", new GrosseZahl("45").toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void ggT() {
|
||||
assertEquals(new GrosseZahl(3), new GrosseZahl(45).ggT(new GrosseZahl(21)));
|
||||
assertEquals(new GrosseZahl(70), new GrosseZahl(1400).ggT(new GrosseZahl(210)));
|
||||
assertNotEquals(new GrosseZahl(2), new GrosseZahl("7").ggT(new GrosseZahl(13)));
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void wrongInput() {
|
||||
new GrosseZahl("42B");
|
||||
new GrosseZahl("42/");
|
||||
}
|
||||
|
||||
package de.joethei.hs.java2.tests;
|
||||
|
||||
import de.joethei.hs.java2.praktikum.praktikum1.GrosseZahl;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class GrosseZahlTest {
|
||||
|
||||
@Test
|
||||
public void constructors() {
|
||||
assertEquals(new GrosseZahl("1456"), new GrosseZahl(1456));
|
||||
assertNotEquals(new GrosseZahl("1234"), new GrosseZahl(1233));
|
||||
assertNotEquals(new GrosseZahl(14), 14);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void length() {
|
||||
assertEquals(4, new GrosseZahl("1234").length());
|
||||
assertNotEquals(5, new GrosseZahl(1234).length());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void numberAt() {
|
||||
assertEquals(5, new GrosseZahl("125").numberAt(2));
|
||||
assertNotEquals(5, new GrosseZahl(125).numberAt(1));
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void add() {
|
||||
assertEquals(new GrosseZahl(42), new GrosseZahl("40").add(new GrosseZahl(2)));
|
||||
assertEquals(new GrosseZahl("42"), new GrosseZahl(40).add(new GrosseZahl(2)));
|
||||
assertNotEquals(new GrosseZahl(43), new GrosseZahl("40").add(new GrosseZahl(2)));
|
||||
assertEquals(new GrosseZahl(200), new GrosseZahl(190).add(new GrosseZahl("10")));
|
||||
assertEquals(new GrosseZahl(200), new GrosseZahl(10).add(new GrosseZahl(190)));
|
||||
assertEquals(new GrosseZahl(400), new GrosseZahl(50).add(new GrosseZahl(350)));
|
||||
assertEquals(new GrosseZahl(4000), new GrosseZahl(500).add(new GrosseZahl(3500)));
|
||||
assertEquals(new GrosseZahl(200), new GrosseZahl("198").add(new GrosseZahl(2)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void sub() {
|
||||
assertEquals(new GrosseZahl(42), new GrosseZahl(100).sub(new GrosseZahl(58)));
|
||||
assertNotEquals(new GrosseZahl(43), new GrosseZahl(100).sub(new GrosseZahl(58)));
|
||||
assertEquals(new GrosseZahl(100), new GrosseZahl(150).sub(new GrosseZahl(50)));
|
||||
assertEquals(new GrosseZahl(0), new GrosseZahl(10).sub(new GrosseZahl("10")));
|
||||
assertEquals(new GrosseZahl(0), new GrosseZahl(10).sub(new GrosseZahl(15)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void mult() {
|
||||
assertEquals(new GrosseZahl(15), new GrosseZahl("5").mult(new GrosseZahl(3)));
|
||||
assertNotEquals(new GrosseZahl("15"), new GrosseZahl("4").mult(new GrosseZahl(3)));
|
||||
assertEquals(new GrosseZahl(90000), new GrosseZahl(9).mult(new GrosseZahl(10000)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void less() {
|
||||
assertTrue(new GrosseZahl("1234").less(new GrosseZahl("12345")));
|
||||
assertFalse(new GrosseZahl("12345").less(new GrosseZahl("1234")));
|
||||
assertFalse(new GrosseZahl("1234").less(new GrosseZahl("1234")));
|
||||
assertFalse(new GrosseZahl("1234").less(new GrosseZahl("1233")));
|
||||
assertTrue(new GrosseZahl(1233).less(new GrosseZahl(1234)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void toStringTest() {
|
||||
assertEquals("45", new GrosseZahl(45).toString());
|
||||
assertEquals("45", new GrosseZahl("45").toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void ggT() {
|
||||
assertEquals(new GrosseZahl(3), new GrosseZahl(45).ggT(new GrosseZahl(21)));
|
||||
assertEquals(new GrosseZahl(70), new GrosseZahl(1400).ggT(new GrosseZahl(210)));
|
||||
assertNotEquals(new GrosseZahl(2), new GrosseZahl("7").ggT(new GrosseZahl(13)));
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void wrongInput() {
|
||||
new GrosseZahl("42B");
|
||||
new GrosseZahl("42/");
|
||||
}
|
||||
|
||||
}
|
@ -1,152 +1,152 @@
|
||||
package de.joethei.hs.java2.tests;
|
||||
|
||||
import de.joethei.hs.java2.praktikum.praktikum1.GrosseZahl;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
public class GrosseZahlTest2 {
|
||||
|
||||
private GrosseZahl i0;
|
||||
private GrosseZahl s0;
|
||||
private GrosseZahl i1;
|
||||
private GrosseZahl s1;
|
||||
private GrosseZahl i55;
|
||||
private GrosseZahl s55;
|
||||
private GrosseZahl i60;
|
||||
private GrosseZahl s60;
|
||||
private GrosseZahl i99;
|
||||
private GrosseZahl s99;
|
||||
private GrosseZahl i100;
|
||||
private GrosseZahl s100;
|
||||
private GrosseZahl i12345;
|
||||
private GrosseZahl s12345;
|
||||
private GrosseZahl s12345678901234567890;
|
||||
private GrosseZahl s10345678901234567891;
|
||||
private GrosseZahl i283935;
|
||||
private GrosseZahl s2736;
|
||||
private GrosseZahl s2737;
|
||||
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
i0 = new GrosseZahl(0);
|
||||
s0 = new GrosseZahl("0");
|
||||
i1 = new GrosseZahl(1);
|
||||
s1 = new GrosseZahl("1");
|
||||
i55 = new GrosseZahl(55);
|
||||
s55 = new GrosseZahl("55");
|
||||
i60 = new GrosseZahl(60);
|
||||
s60 = new GrosseZahl("60");
|
||||
i99 = new GrosseZahl(99);
|
||||
s99 = new GrosseZahl("99");
|
||||
i100 = new GrosseZahl(100);
|
||||
s100 = new GrosseZahl("100");
|
||||
i12345 = new GrosseZahl(12345);
|
||||
s12345 = new GrosseZahl("12345");
|
||||
s12345678901234567890 = new GrosseZahl("12345678901234567890");
|
||||
s10345678901234567891 = new GrosseZahl("10345678901234567891");
|
||||
i283935 = new GrosseZahl("283935");
|
||||
s2736 = new GrosseZahl("2736");
|
||||
s2737 = new GrosseZahl("2737");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testKonstruktor() {
|
||||
assertEquals("0", i0.toString());
|
||||
assertEquals("0", s0.toString());
|
||||
assertEquals("1", i1.toString());
|
||||
assertEquals("1", s1.toString());
|
||||
assertEquals("55", i55.toString());
|
||||
assertEquals("55", s55.toString());
|
||||
assertEquals("60", i60.toString());
|
||||
assertEquals("60", s60.toString());
|
||||
assertEquals("99", i99.toString());
|
||||
assertEquals("99", s99.toString());
|
||||
assertEquals("100", i100.toString());
|
||||
assertEquals("100", s100.toString());
|
||||
assertEquals("12345", i12345.toString());
|
||||
assertEquals("12345", s12345.toString());
|
||||
assertEquals("12345678901234567890", s12345678901234567890.toString());
|
||||
assertEquals("10345678901234567891", s10345678901234567891.toString());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLess() {
|
||||
assertTrue(!i0.less(s0));
|
||||
assertTrue(i0.less(i1));
|
||||
assertTrue(!i1.less(i0));
|
||||
|
||||
assertTrue(!i55.less(s55));
|
||||
assertTrue(i55.less(i60));
|
||||
assertTrue(!i60.less(i55));
|
||||
|
||||
assertTrue(!i99.less(s99));
|
||||
assertTrue(i99.less(i100));
|
||||
assertTrue(!i100.less(i99));
|
||||
|
||||
assertTrue(!s12345678901234567890.less(s12345678901234567890));
|
||||
assertTrue(s10345678901234567891.less(s12345678901234567890));
|
||||
assertTrue(!s12345678901234567890.less(s10345678901234567891));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAdd() {
|
||||
assertEquals("0",i0.add(i0).toString());
|
||||
assertEquals("1",i1.add(i0).toString());
|
||||
assertEquals("1",i0.add(i1).toString());
|
||||
assertEquals("2",i1.add(s1).toString());
|
||||
|
||||
assertEquals("115",i55.add(s60).toString());
|
||||
assertEquals("115",i60.add(s55).toString());
|
||||
|
||||
assertEquals("115",s55.add(i60).toString());
|
||||
assertEquals("115",s60.add(i55).toString());
|
||||
|
||||
assertEquals("12444",i99.add(i12345).toString());
|
||||
assertEquals("12444",i12345.add(i99).toString());
|
||||
|
||||
assertEquals("22691357802469135781",s12345678901234567890.add(s10345678901234567891).toString());
|
||||
assertEquals("22691357802469135781",s10345678901234567891.add(s12345678901234567890).toString());
|
||||
|
||||
GrosseZahl z = new GrosseZahl(0);
|
||||
for (int i=1; i<=125; i++)
|
||||
z=z.add(i99);
|
||||
assertEquals("12375",z.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMult() {
|
||||
assertEquals("0",i0.mult(i0).toString());
|
||||
assertEquals("1",i1.mult(i1).toString());
|
||||
|
||||
assertEquals("3300",i55.mult(s60).toString());
|
||||
assertEquals("3300",i60.mult(s55).toString());
|
||||
|
||||
assertEquals("3300",s55.mult(i60).toString());
|
||||
assertEquals("3300",s60.mult(i55).toString());
|
||||
|
||||
assertEquals("1222155",s12345.mult(s99).toString());
|
||||
assertEquals("1222155",i12345.mult(i99).toString());
|
||||
|
||||
assertEquals("152407406035740740602050",s12345678901234567890.mult(s12345).toString());
|
||||
assertEquals("152407406035740740602050",s12345678901234567890.mult(i12345).toString());
|
||||
|
||||
GrosseZahl z = new GrosseZahl(1);
|
||||
for (int i=1; i<=9; i++)
|
||||
z=z.mult(i99);
|
||||
assertEquals("913517247483640899",z.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGGT() {
|
||||
assertEquals("23",i283935.ggT(s2737).toString());
|
||||
assertEquals("23",s2737.ggT(i283935).toString());
|
||||
|
||||
assertEquals("2737",s2737.ggT(s2737).toString());
|
||||
assertEquals("1",s2736.ggT(s2737).toString());
|
||||
}
|
||||
}
|
||||
package de.joethei.hs.java2.tests;
|
||||
|
||||
import de.joethei.hs.java2.praktikum.praktikum1.GrosseZahl;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
public class GrosseZahlTest2 {
|
||||
|
||||
private GrosseZahl i0;
|
||||
private GrosseZahl s0;
|
||||
private GrosseZahl i1;
|
||||
private GrosseZahl s1;
|
||||
private GrosseZahl i55;
|
||||
private GrosseZahl s55;
|
||||
private GrosseZahl i60;
|
||||
private GrosseZahl s60;
|
||||
private GrosseZahl i99;
|
||||
private GrosseZahl s99;
|
||||
private GrosseZahl i100;
|
||||
private GrosseZahl s100;
|
||||
private GrosseZahl i12345;
|
||||
private GrosseZahl s12345;
|
||||
private GrosseZahl s12345678901234567890;
|
||||
private GrosseZahl s10345678901234567891;
|
||||
private GrosseZahl i283935;
|
||||
private GrosseZahl s2736;
|
||||
private GrosseZahl s2737;
|
||||
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
i0 = new GrosseZahl(0);
|
||||
s0 = new GrosseZahl("0");
|
||||
i1 = new GrosseZahl(1);
|
||||
s1 = new GrosseZahl("1");
|
||||
i55 = new GrosseZahl(55);
|
||||
s55 = new GrosseZahl("55");
|
||||
i60 = new GrosseZahl(60);
|
||||
s60 = new GrosseZahl("60");
|
||||
i99 = new GrosseZahl(99);
|
||||
s99 = new GrosseZahl("99");
|
||||
i100 = new GrosseZahl(100);
|
||||
s100 = new GrosseZahl("100");
|
||||
i12345 = new GrosseZahl(12345);
|
||||
s12345 = new GrosseZahl("12345");
|
||||
s12345678901234567890 = new GrosseZahl("12345678901234567890");
|
||||
s10345678901234567891 = new GrosseZahl("10345678901234567891");
|
||||
i283935 = new GrosseZahl("283935");
|
||||
s2736 = new GrosseZahl("2736");
|
||||
s2737 = new GrosseZahl("2737");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testKonstruktor() {
|
||||
assertEquals("0", i0.toString());
|
||||
assertEquals("0", s0.toString());
|
||||
assertEquals("1", i1.toString());
|
||||
assertEquals("1", s1.toString());
|
||||
assertEquals("55", i55.toString());
|
||||
assertEquals("55", s55.toString());
|
||||
assertEquals("60", i60.toString());
|
||||
assertEquals("60", s60.toString());
|
||||
assertEquals("99", i99.toString());
|
||||
assertEquals("99", s99.toString());
|
||||
assertEquals("100", i100.toString());
|
||||
assertEquals("100", s100.toString());
|
||||
assertEquals("12345", i12345.toString());
|
||||
assertEquals("12345", s12345.toString());
|
||||
assertEquals("12345678901234567890", s12345678901234567890.toString());
|
||||
assertEquals("10345678901234567891", s10345678901234567891.toString());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLess() {
|
||||
assertTrue(!i0.less(s0));
|
||||
assertTrue(i0.less(i1));
|
||||
assertTrue(!i1.less(i0));
|
||||
|
||||
assertTrue(!i55.less(s55));
|
||||
assertTrue(i55.less(i60));
|
||||
assertTrue(!i60.less(i55));
|
||||
|
||||
assertTrue(!i99.less(s99));
|
||||
assertTrue(i99.less(i100));
|
||||
assertTrue(!i100.less(i99));
|
||||
|
||||
assertTrue(!s12345678901234567890.less(s12345678901234567890));
|
||||
assertTrue(s10345678901234567891.less(s12345678901234567890));
|
||||
assertTrue(!s12345678901234567890.less(s10345678901234567891));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAdd() {
|
||||
assertEquals("0",i0.add(i0).toString());
|
||||
assertEquals("1",i1.add(i0).toString());
|
||||
assertEquals("1",i0.add(i1).toString());
|
||||
assertEquals("2",i1.add(s1).toString());
|
||||
|
||||
assertEquals("115",i55.add(s60).toString());
|
||||
assertEquals("115",i60.add(s55).toString());
|
||||
|
||||
assertEquals("115",s55.add(i60).toString());
|
||||
assertEquals("115",s60.add(i55).toString());
|
||||
|
||||
assertEquals("12444",i99.add(i12345).toString());
|
||||
assertEquals("12444",i12345.add(i99).toString());
|
||||
|
||||
assertEquals("22691357802469135781",s12345678901234567890.add(s10345678901234567891).toString());
|
||||
assertEquals("22691357802469135781",s10345678901234567891.add(s12345678901234567890).toString());
|
||||
|
||||
GrosseZahl z = new GrosseZahl(0);
|
||||
for (int i=1; i<=125; i++)
|
||||
z=z.add(i99);
|
||||
assertEquals("12375",z.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMult() {
|
||||
assertEquals("0",i0.mult(i0).toString());
|
||||
assertEquals("1",i1.mult(i1).toString());
|
||||
|
||||
assertEquals("3300",i55.mult(s60).toString());
|
||||
assertEquals("3300",i60.mult(s55).toString());
|
||||
|
||||
assertEquals("3300",s55.mult(i60).toString());
|
||||
assertEquals("3300",s60.mult(i55).toString());
|
||||
|
||||
assertEquals("1222155",s12345.mult(s99).toString());
|
||||
assertEquals("1222155",i12345.mult(i99).toString());
|
||||
|
||||
assertEquals("152407406035740740602050",s12345678901234567890.mult(s12345).toString());
|
||||
assertEquals("152407406035740740602050",s12345678901234567890.mult(i12345).toString());
|
||||
|
||||
GrosseZahl z = new GrosseZahl(1);
|
||||
for (int i=1; i<=9; i++)
|
||||
z=z.mult(i99);
|
||||
assertEquals("913517247483640899",z.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGGT() {
|
||||
assertEquals("23",i283935.ggT(s2737).toString());
|
||||
assertEquals("23",s2737.ggT(i283935).toString());
|
||||
|
||||
assertEquals("2737",s2737.ggT(s2737).toString());
|
||||
assertEquals("1",s2736.ggT(s2737).toString());
|
||||
}
|
||||
}
|
||||
|
@ -1,99 +1,99 @@
|
||||
package de.joethei.hs.java2.tests;
|
||||
|
||||
import de.joethei.hs.java2.praktikum.praktikum4.KlausurenServer;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.Socket;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
@RunWith(OrderedRunner.class)
|
||||
public class KlausurenServerTest {
|
||||
|
||||
private static KlausurenServer server;
|
||||
|
||||
@BeforeClass
|
||||
public static void before() throws InterruptedException {
|
||||
server = new KlausurenServer(6767);
|
||||
Thread.sleep(500L);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Order(order = 1)
|
||||
public void test() {
|
||||
sendRequest("delall");
|
||||
assertEquals("Hallo Welt", sendRequest("test"));
|
||||
assertEquals("0", sendRequest("getall"));
|
||||
}
|
||||
|
||||
@Test(timeout = 120L)
|
||||
@Order(order = 2)
|
||||
public void put() {
|
||||
assertEquals("1 ", sendRequest("put max@maier 6, 5"));
|
||||
assertEquals("1 5,6", sendRequest("put max@maier 7,8"));
|
||||
assertEquals("0", sendRequest("put max@maier"));
|
||||
}
|
||||
|
||||
@Test(timeout = 60L)
|
||||
@Order(order = 3)
|
||||
public void getall() {
|
||||
assertEquals("1 ", sendRequest("put max@baum 5, 6"));
|
||||
assertEquals("1 [5,6],[7,8]", sendRequest("getall"));
|
||||
}
|
||||
|
||||
@Test(timeout = 500L)
|
||||
@Order(order = 4)
|
||||
public void get() {
|
||||
assertEquals("1 7,8", sendRequest("get max@maier"));
|
||||
assertEquals("0", sendRequest("get max@müller"));
|
||||
assertEquals("0", sendRequest("get"));
|
||||
assertEquals("0", sendRequest("get max@müller 42"));
|
||||
}
|
||||
|
||||
@Test(timeout = 500L)
|
||||
@Order(order = 5)
|
||||
public void del() {
|
||||
assertEquals("0", sendRequest("del max@maier baum"));
|
||||
assertEquals("1 7,8", sendRequest("del max@maier"));
|
||||
assertEquals("0", sendRequest("del max@maier"));
|
||||
assertEquals("0", sendRequest("get max@maier"));
|
||||
}
|
||||
@Test(timeout = 2000L)
|
||||
@Order(order = 6)
|
||||
public void saved() throws InterruptedException {
|
||||
assertEquals("1 ", sendRequest("put max@maier 5, 6, 7, 8"));
|
||||
assertEquals("1", sendRequest("stop"));
|
||||
//Thread.sleep(1000L);
|
||||
server = new KlausurenServer(6768);
|
||||
Thread.sleep(100L);
|
||||
assertEquals("1 [5,6,7,8]", sendRequest("getall", 6768));
|
||||
assertEquals("1 5,6,7,8", sendRequest("del max@maier", 6768));
|
||||
assertEquals("1 5,6", sendRequest("del max@baum", 6768));
|
||||
|
||||
}
|
||||
|
||||
private String sendRequest(String command, int port) {
|
||||
try {
|
||||
Socket socket = new Socket("localhost", port);
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
|
||||
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
|
||||
writer.write(command);
|
||||
writer.newLine();
|
||||
writer.flush();
|
||||
String result = reader.readLine();
|
||||
socket.close();
|
||||
return result;
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private String sendRequest(String command) {
|
||||
return sendRequest(command, 6767);
|
||||
}
|
||||
package de.joethei.hs.java2.tests;
|
||||
|
||||
import de.joethei.hs.java2.praktikum.praktikum4.KlausurenServer;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.Socket;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
@RunWith(OrderedRunner.class)
|
||||
public class KlausurenServerTest {
|
||||
|
||||
private static KlausurenServer server;
|
||||
|
||||
@BeforeClass
|
||||
public static void before() throws InterruptedException {
|
||||
server = new KlausurenServer(6767);
|
||||
Thread.sleep(500L);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Order(order = 1)
|
||||
public void test() {
|
||||
sendRequest("delall");
|
||||
assertEquals("Hallo Welt", sendRequest("test"));
|
||||
assertEquals("0", sendRequest("getall"));
|
||||
}
|
||||
|
||||
@Test(timeout = 120L)
|
||||
@Order(order = 2)
|
||||
public void put() {
|
||||
assertEquals("1 ", sendRequest("put max@maier 6, 5"));
|
||||
assertEquals("1 5,6", sendRequest("put max@maier 7,8"));
|
||||
assertEquals("0", sendRequest("put max@maier"));
|
||||
}
|
||||
|
||||
@Test(timeout = 60L)
|
||||
@Order(order = 3)
|
||||
public void getall() {
|
||||
assertEquals("1 ", sendRequest("put max@baum 5, 6"));
|
||||
assertEquals("1 [5,6],[7,8]", sendRequest("getall"));
|
||||
}
|
||||
|
||||
@Test(timeout = 500L)
|
||||
@Order(order = 4)
|
||||
public void get() {
|
||||
assertEquals("1 7,8", sendRequest("get max@maier"));
|
||||
assertEquals("0", sendRequest("get max@müller"));
|
||||
assertEquals("0", sendRequest("get"));
|
||||
assertEquals("0", sendRequest("get max@müller 42"));
|
||||
}
|
||||
|
||||
@Test(timeout = 500L)
|
||||
@Order(order = 5)
|
||||
public void del() {
|
||||
assertEquals("0", sendRequest("del max@maier baum"));
|
||||
assertEquals("1 7,8", sendRequest("del max@maier"));
|
||||
assertEquals("0", sendRequest("del max@maier"));
|
||||
assertEquals("0", sendRequest("get max@maier"));
|
||||
}
|
||||
@Test(timeout = 2000L)
|
||||
@Order(order = 6)
|
||||
public void saved() throws InterruptedException {
|
||||
assertEquals("1 ", sendRequest("put max@maier 5, 6, 7, 8"));
|
||||
assertEquals("1", sendRequest("stop"));
|
||||
//Thread.sleep(1000L);
|
||||
server = new KlausurenServer(6768);
|
||||
Thread.sleep(100L);
|
||||
assertEquals("1 [5,6,7,8]", sendRequest("getall", 6768));
|
||||
assertEquals("1 5,6,7,8", sendRequest("del max@maier", 6768));
|
||||
assertEquals("1 5,6", sendRequest("del max@baum", 6768));
|
||||
|
||||
}
|
||||
|
||||
private String sendRequest(String command, int port) {
|
||||
try {
|
||||
Socket socket = new Socket("localhost", port);
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
|
||||
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
|
||||
writer.write(command);
|
||||
writer.newLine();
|
||||
writer.flush();
|
||||
String result = reader.readLine();
|
||||
socket.close();
|
||||
return result;
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private String sendRequest(String command) {
|
||||
return sendRequest(command, 6767);
|
||||
}
|
||||
}
|
@ -1,199 +1,199 @@
|
||||
package de.joethei.hs.java2.tests;
|
||||
|
||||
import de.joethei.hs.java2.praktikum.praktikum4.KlausurenServer;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.PrintWriter;
|
||||
import java.net.Socket;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
public class KlausurenServerTest2 {
|
||||
|
||||
PrintWriter ausSo;
|
||||
BufferedReader einSo;
|
||||
Socket so;
|
||||
String line;
|
||||
|
||||
public void opensocket() throws IOException {
|
||||
so = new Socket("localhost", 6769); //Port 6769 wird erwartet!
|
||||
ausSo = new PrintWriter(so.getOutputStream(), true);
|
||||
einSo = new BufferedReader(new InputStreamReader(so.getInputStream()));
|
||||
}
|
||||
|
||||
public void closesocket() throws IOException {
|
||||
so.close();
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setUp() throws IOException {
|
||||
new KlausurenServer(6769);
|
||||
System.out.println("INITIALISIERUNG");
|
||||
opensocket();
|
||||
ausSo.println("del mail1");
|
||||
line = einSo.readLine();
|
||||
closesocket();
|
||||
opensocket();
|
||||
ausSo.println("del mail2");
|
||||
line = einSo.readLine();
|
||||
closesocket();
|
||||
opensocket();
|
||||
ausSo.println("del mail3");
|
||||
line = einSo.readLine();
|
||||
closesocket();
|
||||
opensocket();
|
||||
ausSo.println("del mail4");
|
||||
line = einSo.readLine();
|
||||
closesocket();
|
||||
opensocket();
|
||||
ausSo.println("del mail5");
|
||||
line = einSo.readLine();
|
||||
closesocket();
|
||||
System.out.println("INITIALISIERUNG OK"+"\n");
|
||||
}
|
||||
|
||||
@Test //alles in einer Test-Methode, weil die richtige Reihenfolge sonst nicht gewährleistet ist!
|
||||
public void all() throws IOException {
|
||||
System.out.println("TEST: del mail1");
|
||||
opensocket();
|
||||
ausSo.println("del mail1");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertEquals(line,"0");
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
|
||||
System.out.println("TEST: put mail2 22,23,24");
|
||||
opensocket();
|
||||
ausSo.println("put mail2 22,23,24");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertTrue(line.equals("1 ")||line.equals("1"));
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
|
||||
System.out.println("TEST: put mail2 33,34,35");
|
||||
opensocket();
|
||||
ausSo.println("put mail2 33,34,35");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertEquals(line,"1 22,23,24");
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
|
||||
System.out.println("TEST: get mail2");
|
||||
opensocket();
|
||||
ausSo.println("get mail2");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertEquals(line,"1 33,34,35");
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
|
||||
System.out.println("TEST: put mail3 44,45,46");
|
||||
opensocket();
|
||||
ausSo.println("put mail3 44,45,46");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertTrue(line.equals("1 ")||line.equals("1"));
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
|
||||
System.out.println("TEST: put mail4 44,45");
|
||||
opensocket();
|
||||
ausSo.println("put mail5 44,45");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertTrue(line.equals("1 ")||line.equals("1"));
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
|
||||
System.out.println("TEST: getall");
|
||||
opensocket();
|
||||
ausSo.println("getall");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertTrue(line.equals("1 [33,34,35],[44,45,46]")||line.equals("1 [44,45,46],[33,34,35]"));
|
||||
// assertEquals(line,"1 [33,34,35],[44,45,46]");
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
|
||||
System.out.println("TEST: del mail2");
|
||||
opensocket();
|
||||
ausSo.println("del mail2");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertEquals(line,"1 33,34,35");
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
|
||||
System.out.println("TEST: del mail3");
|
||||
opensocket();
|
||||
ausSo.println("del mail3");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertEquals(line,"1 44,45,46");
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
|
||||
System.out.println("TEST: get mail2");
|
||||
opensocket();
|
||||
ausSo.println("get mail2");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertEquals(line,"0");
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
|
||||
System.out.println("TEST: getall");
|
||||
opensocket();
|
||||
ausSo.println("getall");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertEquals(line,"1 [44,45]");
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
|
||||
System.out.println("TEST: put mail2 45,46");
|
||||
opensocket();
|
||||
ausSo.println("put mail2 45,46");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertTrue(line.equals("1 ")||line.equals("1"));
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
|
||||
System.out.println("TEST: put mail3 44,46");
|
||||
opensocket();
|
||||
ausSo.println("put mail3 44,46");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertTrue(line.equals("1 ")||line.equals("1"));
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
|
||||
System.out.println("TEST: getall");
|
||||
opensocket();
|
||||
ausSo.println("getall");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertTrue(line.equals("1 [44,45],[44,46],[45,46]")||line.equals("1 [44,45],[45,46],[44,46]")||line.equals("1 [44,46],[44,45],[45,46]")||line.equals("1 [44,46],[45,46],[44,45]")||line.equals("1 [45,46],[44,45],[44,46]")||line.equals("1 [45,46],[44,46],[44,45]")||line.equals("1 [44,45,46]"));
|
||||
// assertEquals(line,"1 [44,45],[44,46],[45,46]");
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
|
||||
System.out.println("TEST: stop");
|
||||
opensocket();
|
||||
ausSo.println("stop");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertTrue(line.equals("1 ")||line.equals("1"));
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
}
|
||||
package de.joethei.hs.java2.tests;
|
||||
|
||||
import de.joethei.hs.java2.praktikum.praktikum4.KlausurenServer;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.PrintWriter;
|
||||
import java.net.Socket;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
public class KlausurenServerTest2 {
|
||||
|
||||
PrintWriter ausSo;
|
||||
BufferedReader einSo;
|
||||
Socket so;
|
||||
String line;
|
||||
|
||||
public void opensocket() throws IOException {
|
||||
so = new Socket("localhost", 6769); //Port 6769 wird erwartet!
|
||||
ausSo = new PrintWriter(so.getOutputStream(), true);
|
||||
einSo = new BufferedReader(new InputStreamReader(so.getInputStream()));
|
||||
}
|
||||
|
||||
public void closesocket() throws IOException {
|
||||
so.close();
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setUp() throws IOException {
|
||||
new KlausurenServer(6769);
|
||||
System.out.println("INITIALISIERUNG");
|
||||
opensocket();
|
||||
ausSo.println("del mail1");
|
||||
line = einSo.readLine();
|
||||
closesocket();
|
||||
opensocket();
|
||||
ausSo.println("del mail2");
|
||||
line = einSo.readLine();
|
||||
closesocket();
|
||||
opensocket();
|
||||
ausSo.println("del mail3");
|
||||
line = einSo.readLine();
|
||||
closesocket();
|
||||
opensocket();
|
||||
ausSo.println("del mail4");
|
||||
line = einSo.readLine();
|
||||
closesocket();
|
||||
opensocket();
|
||||
ausSo.println("del mail5");
|
||||
line = einSo.readLine();
|
||||
closesocket();
|
||||
System.out.println("INITIALISIERUNG OK"+"\n");
|
||||
}
|
||||
|
||||
@Test //alles in einer Test-Methode, weil die richtige Reihenfolge sonst nicht gewährleistet ist!
|
||||
public void all() throws IOException {
|
||||
System.out.println("TEST: del mail1");
|
||||
opensocket();
|
||||
ausSo.println("del mail1");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertEquals(line,"0");
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
|
||||
System.out.println("TEST: put mail2 22,23,24");
|
||||
opensocket();
|
||||
ausSo.println("put mail2 22,23,24");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertTrue(line.equals("1 ")||line.equals("1"));
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
|
||||
System.out.println("TEST: put mail2 33,34,35");
|
||||
opensocket();
|
||||
ausSo.println("put mail2 33,34,35");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertEquals(line,"1 22,23,24");
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
|
||||
System.out.println("TEST: get mail2");
|
||||
opensocket();
|
||||
ausSo.println("get mail2");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertEquals(line,"1 33,34,35");
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
|
||||
System.out.println("TEST: put mail3 44,45,46");
|
||||
opensocket();
|
||||
ausSo.println("put mail3 44,45,46");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertTrue(line.equals("1 ")||line.equals("1"));
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
|
||||
System.out.println("TEST: put mail4 44,45");
|
||||
opensocket();
|
||||
ausSo.println("put mail5 44,45");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertTrue(line.equals("1 ")||line.equals("1"));
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
|
||||
System.out.println("TEST: getall");
|
||||
opensocket();
|
||||
ausSo.println("getall");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertTrue(line.equals("1 [33,34,35],[44,45,46]")||line.equals("1 [44,45,46],[33,34,35]"));
|
||||
// assertEquals(line,"1 [33,34,35],[44,45,46]");
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
|
||||
System.out.println("TEST: del mail2");
|
||||
opensocket();
|
||||
ausSo.println("del mail2");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertEquals(line,"1 33,34,35");
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
|
||||
System.out.println("TEST: del mail3");
|
||||
opensocket();
|
||||
ausSo.println("del mail3");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertEquals(line,"1 44,45,46");
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
|
||||
System.out.println("TEST: get mail2");
|
||||
opensocket();
|
||||
ausSo.println("get mail2");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertEquals(line,"0");
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
|
||||
System.out.println("TEST: getall");
|
||||
opensocket();
|
||||
ausSo.println("getall");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertEquals(line,"1 [44,45]");
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
|
||||
System.out.println("TEST: put mail2 45,46");
|
||||
opensocket();
|
||||
ausSo.println("put mail2 45,46");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertTrue(line.equals("1 ")||line.equals("1"));
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
|
||||
System.out.println("TEST: put mail3 44,46");
|
||||
opensocket();
|
||||
ausSo.println("put mail3 44,46");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertTrue(line.equals("1 ")||line.equals("1"));
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
|
||||
System.out.println("TEST: getall");
|
||||
opensocket();
|
||||
ausSo.println("getall");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertTrue(line.equals("1 [44,45],[44,46],[45,46]")||line.equals("1 [44,45],[45,46],[44,46]")||line.equals("1 [44,46],[44,45],[45,46]")||line.equals("1 [44,46],[45,46],[44,45]")||line.equals("1 [45,46],[44,45],[44,46]")||line.equals("1 [45,46],[44,46],[44,45]")||line.equals("1 [44,45,46]"));
|
||||
// assertEquals(line,"1 [44,45],[44,46],[45,46]");
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
|
||||
System.out.println("TEST: stop");
|
||||
opensocket();
|
||||
ausSo.println("stop");
|
||||
line = einSo.readLine();
|
||||
//System.out.println(line);
|
||||
assertTrue(line.equals("1 ")||line.equals("1"));
|
||||
closesocket();
|
||||
System.out.println("TEST: OK"+"\n");
|
||||
}
|
||||
}
|
@ -1,12 +1,12 @@
|
||||
package de.joethei.hs.java2.tests;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target({ ElementType.METHOD})
|
||||
public @interface Order {
|
||||
public int order();
|
||||
package de.joethei.hs.java2.tests;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target({ ElementType.METHOD})
|
||||
public @interface Order {
|
||||
public int order();
|
||||
}
|
@ -1,31 +1,31 @@
|
||||
package de.joethei.hs.java2.tests;
|
||||
|
||||
import org.junit.runners.BlockJUnit4ClassRunner;
|
||||
import org.junit.runners.model.FrameworkMethod;
|
||||
import org.junit.runners.model.InitializationError;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class OrderedRunner extends BlockJUnit4ClassRunner {
|
||||
|
||||
public OrderedRunner(Class<?> clazz) throws InitializationError {
|
||||
super(clazz);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<FrameworkMethod> computeTestMethods() {
|
||||
List<FrameworkMethod> list = super.computeTestMethods();
|
||||
List<FrameworkMethod> copy = new ArrayList<>(list);
|
||||
copy.sort((f1, f2) -> {
|
||||
Order o1 = f1.getAnnotation(Order.class);
|
||||
Order o2 = f2.getAnnotation(Order.class);
|
||||
|
||||
if (o1 == null || o2 == null)
|
||||
return -1;
|
||||
|
||||
return o1.order() - o2.order();
|
||||
});
|
||||
return copy;
|
||||
}
|
||||
package de.joethei.hs.java2.tests;
|
||||
|
||||
import org.junit.runners.BlockJUnit4ClassRunner;
|
||||
import org.junit.runners.model.FrameworkMethod;
|
||||
import org.junit.runners.model.InitializationError;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class OrderedRunner extends BlockJUnit4ClassRunner {
|
||||
|
||||
public OrderedRunner(Class<?> clazz) throws InitializationError {
|
||||
super(clazz);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<FrameworkMethod> computeTestMethods() {
|
||||
List<FrameworkMethod> list = super.computeTestMethods();
|
||||
List<FrameworkMethod> copy = new ArrayList<>(list);
|
||||
copy.sort((f1, f2) -> {
|
||||
Order o1 = f1.getAnnotation(Order.class);
|
||||
Order o2 = f2.getAnnotation(Order.class);
|
||||
|
||||
if (o1 == null || o2 == null)
|
||||
return -1;
|
||||
|
||||
return o1.order() - o2.order();
|
||||
});
|
||||
return copy;
|
||||
}
|
||||
}
|
@ -1,135 +1,135 @@
|
||||
package de.joethei.hs.java2.tests;
|
||||
|
||||
import de.joethei.hs.java2.praktikum.praktikum3.TextFileFormatException;
|
||||
import de.joethei.hs.java2.praktikum.praktikum3.Vorlesung;
|
||||
import de.joethei.hs.java2.praktikum.praktikum3.Vorlesungsverzeichnis;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotEquals;
|
||||
|
||||
public class VorlesungsverzeichnisTest {
|
||||
|
||||
private Vorlesungsverzeichnis vorlesungsverzeichnis;
|
||||
|
||||
@Before
|
||||
public void before() {
|
||||
try {
|
||||
vorlesungsverzeichnis = new Vorlesungsverzeichnis(Objects.requireNonNull(getClass().getClassLoader().getResource("praktikum3/vorlesungen.txt")).getFile());
|
||||
} catch (IOException | TextFileFormatException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test(expected = IOException.class)
|
||||
public void constructorIOException() throws IOException, TextFileFormatException {
|
||||
new Vorlesungsverzeichnis("HalloWelt");
|
||||
}
|
||||
|
||||
@Test(expected = TextFileFormatException.class)
|
||||
public void constructorTextFileFormatException() throws IOException, TextFileFormatException {
|
||||
new Vorlesungsverzeichnis(Objects.requireNonNull(getClass().getClassLoader().getResource("praktikum3/vorlesungen-format.txt")).getFile());
|
||||
}
|
||||
|
||||
@Test(expected = TextFileFormatException.class)
|
||||
public void constructorNumberFormatException() throws IOException, TextFileFormatException {
|
||||
new Vorlesungsverzeichnis(Objects.requireNonNull(getClass().getClassLoader().getResource("praktikum3/vorlesungen-number.txt")).getFile());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void titles() {
|
||||
List<String> titles = new ArrayList<>();
|
||||
titles.add("Algorithmen und Datenstrukturen");
|
||||
titles.add("Audio-/Videotechnik");
|
||||
titles.add("Internet-Technologien");
|
||||
titles.add("Java 2");
|
||||
titles.add("Mathematik 2");
|
||||
titles.add("Rechnerarchitekturen");
|
||||
|
||||
assertEquals(vorlesungsverzeichnis.titles(), titles);
|
||||
|
||||
titles.add("Hallo Welt");
|
||||
assertNotEquals(vorlesungsverzeichnis.titles(), titles);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void workaholics() {
|
||||
Set<String> set = new HashSet<>();
|
||||
set.add("von Coelln");
|
||||
set.add("Rump");
|
||||
assertEquals(vorlesungsverzeichnis.workaholics(), set);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void groupToTitles() {
|
||||
Map<String, List<String>> map = vorlesungsverzeichnis.groupToTitles();
|
||||
|
||||
List<String> mt2 = new ArrayList<>();
|
||||
mt2.add("Audio-/Videotechnik");
|
||||
mt2.add("Mathematik 2");
|
||||
|
||||
List<String> e2 = new ArrayList<>();
|
||||
e2.add("Mathematik 2");
|
||||
|
||||
List<String> i2 = new ArrayList<>();
|
||||
i2.add("Algorithmen und Datenstrukturen");
|
||||
i2.add("Java 2");
|
||||
|
||||
List<String> i4 = new ArrayList<>();
|
||||
i4.add("Internet-Technologien");
|
||||
i4.add("Rechnerarchitekturen");
|
||||
|
||||
assertEquals(mt2, map.get("MT2"));
|
||||
assertEquals(e2, map.get("E2"));
|
||||
assertEquals(i2, map.get("I2"));
|
||||
assertEquals(i4, map.get("I4"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void multipleTitles() {
|
||||
Map<String, List<String>> map = vorlesungsverzeichnis.multipleTitles();
|
||||
|
||||
List<String> math = new ArrayList<>();
|
||||
math.add("Rabe");
|
||||
math.add("von Coelln");
|
||||
|
||||
Collections.sort(math);
|
||||
assertEquals(map.get("Mathematik 2"), math);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void descendingTitles() {
|
||||
List<String> list = new ArrayList<>();
|
||||
list.add("Java 2");
|
||||
list.add("Algorithmen und Datenstrukturen");
|
||||
list.add("Mathematik 2");
|
||||
list.add("Mathematik 2");
|
||||
list.add("Audio-/Videotechnik");
|
||||
list.add("Rechnerarchitekturen");
|
||||
list.add("Internet-Technologien");
|
||||
|
||||
assertEquals(list, vorlesungsverzeichnis.descendingTitles());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void toStringTest() {
|
||||
List<String> list = new ArrayList<>();
|
||||
list.add("I2");
|
||||
list.add("Java 2");
|
||||
list.add("Rump");
|
||||
list.add("10");
|
||||
try {
|
||||
Vorlesung vorlesung = new Vorlesung(list);
|
||||
assertEquals(vorlesung.toString(), "I2:Java 2:Rump:10");
|
||||
} catch (TextFileFormatException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
package de.joethei.hs.java2.tests;
|
||||
|
||||
import de.joethei.hs.java2.praktikum.praktikum3.TextFileFormatException;
|
||||
import de.joethei.hs.java2.praktikum.praktikum3.Vorlesung;
|
||||
import de.joethei.hs.java2.praktikum.praktikum3.Vorlesungsverzeichnis;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotEquals;
|
||||
|
||||
public class VorlesungsverzeichnisTest {
|
||||
|
||||
private Vorlesungsverzeichnis vorlesungsverzeichnis;
|
||||
|
||||
@Before
|
||||
public void before() {
|
||||
try {
|
||||
vorlesungsverzeichnis = new Vorlesungsverzeichnis(Objects.requireNonNull(getClass().getClassLoader().getResource("praktikum3/vorlesungen.txt")).getFile());
|
||||
} catch (IOException | TextFileFormatException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Test(expected = IOException.class)
|
||||
public void constructorIOException() throws IOException, TextFileFormatException {
|
||||
new Vorlesungsverzeichnis("HalloWelt");
|
||||
}
|
||||
|
||||
@Test(expected = TextFileFormatException.class)
|
||||
public void constructorTextFileFormatException() throws IOException, TextFileFormatException {
|
||||
new Vorlesungsverzeichnis(Objects.requireNonNull(getClass().getClassLoader().getResource("praktikum3/vorlesungen-format.txt")).getFile());
|
||||
}
|
||||
|
||||
@Test(expected = TextFileFormatException.class)
|
||||
public void constructorNumberFormatException() throws IOException, TextFileFormatException {
|
||||
new Vorlesungsverzeichnis(Objects.requireNonNull(getClass().getClassLoader().getResource("praktikum3/vorlesungen-number.txt")).getFile());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void titles() {
|
||||
List<String> titles = new ArrayList<>();
|
||||
titles.add("Algorithmen und Datenstrukturen");
|
||||
titles.add("Audio-/Videotechnik");
|
||||
titles.add("Internet-Technologien");
|
||||
titles.add("Java 2");
|
||||
titles.add("Mathematik 2");
|
||||
titles.add("Rechnerarchitekturen");
|
||||
|
||||
assertEquals(vorlesungsverzeichnis.titles(), titles);
|
||||
|
||||
titles.add("Hallo Welt");
|
||||
assertNotEquals(vorlesungsverzeichnis.titles(), titles);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void workaholics() {
|
||||
Set<String> set = new HashSet<>();
|
||||
set.add("von Coelln");
|
||||
set.add("Rump");
|
||||
assertEquals(vorlesungsverzeichnis.workaholics(), set);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void groupToTitles() {
|
||||
Map<String, List<String>> map = vorlesungsverzeichnis.groupToTitles();
|
||||
|
||||
List<String> mt2 = new ArrayList<>();
|
||||
mt2.add("Audio-/Videotechnik");
|
||||
mt2.add("Mathematik 2");
|
||||
|
||||
List<String> e2 = new ArrayList<>();
|
||||
e2.add("Mathematik 2");
|
||||
|
||||
List<String> i2 = new ArrayList<>();
|
||||
i2.add("Algorithmen und Datenstrukturen");
|
||||
i2.add("Java 2");
|
||||
|
||||
List<String> i4 = new ArrayList<>();
|
||||
i4.add("Internet-Technologien");
|
||||
i4.add("Rechnerarchitekturen");
|
||||
|
||||
assertEquals(mt2, map.get("MT2"));
|
||||
assertEquals(e2, map.get("E2"));
|
||||
assertEquals(i2, map.get("I2"));
|
||||
assertEquals(i4, map.get("I4"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void multipleTitles() {
|
||||
Map<String, List<String>> map = vorlesungsverzeichnis.multipleTitles();
|
||||
|
||||
List<String> math = new ArrayList<>();
|
||||
math.add("Rabe");
|
||||
math.add("von Coelln");
|
||||
|
||||
Collections.sort(math);
|
||||
assertEquals(map.get("Mathematik 2"), math);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void descendingTitles() {
|
||||
List<String> list = new ArrayList<>();
|
||||
list.add("Java 2");
|
||||
list.add("Algorithmen und Datenstrukturen");
|
||||
list.add("Mathematik 2");
|
||||
list.add("Mathematik 2");
|
||||
list.add("Audio-/Videotechnik");
|
||||
list.add("Rechnerarchitekturen");
|
||||
list.add("Internet-Technologien");
|
||||
|
||||
assertEquals(list, vorlesungsverzeichnis.descendingTitles());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void toStringTest() {
|
||||
List<String> list = new ArrayList<>();
|
||||
list.add("I2");
|
||||
list.add("Java 2");
|
||||
list.add("Rump");
|
||||
list.add("10");
|
||||
try {
|
||||
Vorlesung vorlesung = new Vorlesung(list);
|
||||
assertEquals(vorlesung.toString(), "I2:Java 2:Rump:10");
|
||||
} catch (TextFileFormatException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,240 +1,240 @@
|
||||
package de.joethei.hs.java2.tests;
|
||||
|
||||
import de.joethei.hs.java2.praktikum.praktikum3.TextFileFormatException;
|
||||
import de.joethei.hs.java2.praktikum.praktikum3.Vorlesung;
|
||||
import de.joethei.hs.java2.praktikum.praktikum3.Vorlesungsverzeichnis;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.*;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
public class VorlesungsverzeichnisTest2 {
|
||||
private String filename = "src/main/resources/praktikum3/vorlesungen-db.txt";
|
||||
private PrintWriter pw;
|
||||
|
||||
Class<Vorlesung> c = Vorlesung.class; // Klasse Vorlesung vorhanden?
|
||||
|
||||
@Before
|
||||
public void setUp() throws IOException
|
||||
{
|
||||
pw = new PrintWriter(filename);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Titles() throws IOException, TextFileFormatException
|
||||
{
|
||||
List<String> al = new ArrayList<>();
|
||||
|
||||
al.add("Elektrodynamik");
|
||||
al.add("Quantenmechanik");
|
||||
al.add("Quantenphysik");
|
||||
al.add("Relativitätstheorie");
|
||||
al.add("Theoretische Physik");
|
||||
al.add("Thermodynamik");
|
||||
|
||||
pw.print(
|
||||
"A1:Relativitätstheorie:Einstein:15\n" +
|
||||
"B2:Quantenmechanik:Heisenberg:17\n" +
|
||||
"C2:Quantenphysik:Planck:5\n" +
|
||||
"T4:Thermodynamik:Kelvin:78\n" +
|
||||
"C2:Theoretische Physik:Kelvin:54\n" +
|
||||
"B2:Thermodynamik:Planck:44\n" +
|
||||
"T4:Quantenphysik:Planck:45\n" +
|
||||
"B2:Elektrodynamik:Kelvin:34");
|
||||
pw.close();
|
||||
|
||||
|
||||
Vorlesungsverzeichnis l = new Vorlesungsverzeichnis(filename);
|
||||
// System.out.println(al);
|
||||
// System.out.println(l.titles());
|
||||
assertEquals(al,l.titles());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Workaholics() throws IOException, TextFileFormatException
|
||||
{
|
||||
Set<String> s = new HashSet<>();
|
||||
|
||||
s.add("Planck");
|
||||
s.add("Kelvin");
|
||||
|
||||
pw.print(
|
||||
"A1:Relativitätstheorie:Einstein:15\n" +
|
||||
"B2:Quantenmechanik:Heisenberg:17\n" +
|
||||
"C2:Quantenphysik:Planck:5\n" +
|
||||
"T4:Thermodynamik:Kelvin:78\n" +
|
||||
"C2:Theoretische Physik:Kelvin:54\n" +
|
||||
"B2:Thermodynamik:Planck:44\n" +
|
||||
"T4:Quantenphysik:Planck:45\n" +
|
||||
"B2:Elektrodynamik:Kelvin:34");
|
||||
pw.close();
|
||||
|
||||
|
||||
Vorlesungsverzeichnis l = new Vorlesungsverzeichnis(filename);
|
||||
// System.out.println(s);
|
||||
// System.out.println(l.workaholics());
|
||||
assertEquals(s,l.workaholics());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void GroupToTitles() throws IOException, TextFileFormatException
|
||||
{
|
||||
Map<String, List<String>> map2 = new HashMap<>();
|
||||
List<String> s1 = new ArrayList<>();
|
||||
List<String> s2 = new ArrayList<>();
|
||||
List<String> s3a = new ArrayList<>();
|
||||
List<String> s3b = new ArrayList<>();
|
||||
List<String> s4a = new ArrayList<>();
|
||||
List<String> s4b = new ArrayList<>();
|
||||
|
||||
s1.add("Relativitätstheorie");
|
||||
map2.put("A1",s1);
|
||||
s2.add("Quantenmechanik");
|
||||
s2.add("Thermodynamik");
|
||||
s2.add("Elektrodynamik");
|
||||
map2.put("B2",s2);
|
||||
s3a.add("Quantenphysik");
|
||||
s3a.add("Theoretische Physik");
|
||||
s3b.add("Theoretische Physik");
|
||||
s3b.add("Quantenphysik");
|
||||
map2.put("C2",s3a);
|
||||
s4a.add("Thermodynamik");
|
||||
s4a.add("Quantenphysik");
|
||||
map2.put("T4",s4a);
|
||||
s4b.add("Quantenphysik");
|
||||
s4b.add("Thermodynamik");
|
||||
|
||||
pw.print(
|
||||
"A1:Relativitätstheorie:Einstein:15\n" +
|
||||
"B2:Quantenmechanik:Heisenberg:17\n" +
|
||||
"C2:Quantenphysik:Planck:5\n" +
|
||||
"T4:Thermodynamik:Kelvin:78\n" +
|
||||
"C2:Theoretische Physik:Kelvin:54\n" +
|
||||
"B2:Thermodynamik:Planck:44\n" +
|
||||
"T4:Quantenphysik:Planck:45\n" +
|
||||
"B2:Elektrodynamik:Kelvin:34");
|
||||
pw.close();
|
||||
|
||||
Vorlesungsverzeichnis l = new Vorlesungsverzeichnis(filename);
|
||||
// System.out.println(map2);
|
||||
// System.out.println(l.groupToTitles());
|
||||
// assertEquals(map2,l.groupToTitles());
|
||||
assertEquals(s1, l.groupToTitles().get("A1"));
|
||||
assertTrue(s3a.equals(l.groupToTitles().get("C2")) || s3b.equals(l.groupToTitles().get("C2")));
|
||||
assertTrue(s4a.equals(l.groupToTitles().get("T4")) || s4b.equals(l.groupToTitles().get("T4")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void multipleTitles() throws IOException, TextFileFormatException
|
||||
{
|
||||
Map<String, List<String>> map2 = new HashMap<>();
|
||||
List<String> s1a = new ArrayList<>();
|
||||
List<String> s1b = new ArrayList<>();
|
||||
|
||||
s1a.add("Kelvin");
|
||||
s1a.add("Planck");
|
||||
s1b.add("Planck");
|
||||
s1b.add("Kelvin");
|
||||
map2.put("Thermodynamik",s1a);
|
||||
|
||||
pw.print(
|
||||
"A1:Relativitätstheorie:Einstein:15\n" +
|
||||
"B2:Quantenmechanik:Heisenberg:17\n" +
|
||||
"C2:Quantenphysik:Planck:5\n" +
|
||||
"T4:Thermodynamik:Kelvin:78\n" +
|
||||
"C2:Theoretische Physik:Kelvin:54\n" +
|
||||
"B2:Thermodynamik:Planck:44\n" +
|
||||
"T4:Quantenphysik:Planck:45\n" +
|
||||
"B2:Elektrodynamik:Kelvin:34");
|
||||
pw.close();
|
||||
|
||||
|
||||
Vorlesungsverzeichnis l = new Vorlesungsverzeichnis(filename);
|
||||
// System.out.println(map2);
|
||||
// System.out.println(l.multipleTitles());
|
||||
// assertEquals(map2,l.multipleTitles());
|
||||
assertTrue(s1a.equals(l.multipleTitles().get("Thermodynamik")) || s1b.equals(l.multipleTitles().get("Thermodynamik")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void descendingTitles() throws IOException, TextFileFormatException
|
||||
{
|
||||
{
|
||||
List<String> al = new ArrayList<>();
|
||||
|
||||
al.add("Thermodynamik");
|
||||
al.add("Theoretische Physik");
|
||||
al.add("Quantenphysik");
|
||||
al.add("Thermodynamik");
|
||||
al.add("Elektrodynamik");
|
||||
al.add("Quantenmechanik");
|
||||
al.add("Relativitätstheorie");
|
||||
al.add("Quantenphysik");
|
||||
|
||||
pw.print(
|
||||
"A1:Relativitätstheorie:Einstein:15\n" +
|
||||
"B2:Quantenmechanik:Heisenberg:17\n" +
|
||||
"C2:Quantenphysik:Planck:5\n" +
|
||||
"T4:Thermodynamik:Kelvin:78\n" +
|
||||
"C2:Theoretische Physik:Kelvin:54\n" +
|
||||
"B2:Thermodynamik:Planck:44\n" +
|
||||
"T4:Quantenphysik:Planck:45\n" +
|
||||
"B2:Elektrodynamik:Kelvin:34");
|
||||
pw.close();
|
||||
|
||||
Vorlesungsverzeichnis l = new Vorlesungsverzeichnis(filename);
|
||||
// System.out.println(al);
|
||||
// System.out.println(l.descendingTitles());
|
||||
assertEquals(al,l.descendingTitles());
|
||||
}
|
||||
}
|
||||
|
||||
@Test(expected=TextFileFormatException.class)
|
||||
public void Liste_zu_kurz() throws IOException, TextFileFormatException {
|
||||
pw.print(
|
||||
"C2:Theoretische Physik:Kelvin:54\n" +
|
||||
"B2:Thermodynamik:Planck\n" +
|
||||
"T4:Quantenphysik:Planck:45\n" +
|
||||
"B2:Elektrodynamik:Kelvin:34");
|
||||
pw.close();
|
||||
Vorlesungsverzeichnis k = new Vorlesungsverzeichnis(filename);
|
||||
}
|
||||
|
||||
@Test(expected=TextFileFormatException.class)
|
||||
public void Liste_zu_lang() throws IOException, TextFileFormatException {
|
||||
pw.print(
|
||||
"C2:Theoretische Physik:Kelvin:54:55\n" +
|
||||
"B2:Thermodynamik:Planck:44\n" +
|
||||
"T4:Quantenphysik:Planck:45\n" +
|
||||
"B2:Elektrodynamik:Kelvin:34");
|
||||
pw.close();
|
||||
Vorlesungsverzeichnis k = new Vorlesungsverzeichnis(filename);
|
||||
}
|
||||
|
||||
@Test(expected=TextFileFormatException.class)
|
||||
public void Listenfeld_leer() throws IOException, TextFileFormatException {
|
||||
pw.print(
|
||||
"C2:Theoretische Physik:Kelvin:54\n" +
|
||||
"B2:Thermodynamik:Planck:44\n" +
|
||||
":Quantenphysik:Planck:45\n" +
|
||||
"B2:Elektrodynamik:Kelvin:34");
|
||||
pw.close();
|
||||
Vorlesungsverzeichnis k = new Vorlesungsverzeichnis(filename);
|
||||
}
|
||||
|
||||
@Test(expected=TextFileFormatException.class)
|
||||
public void Teilnehmerzahl_keine_Zahl() throws IOException, TextFileFormatException {
|
||||
pw.print(
|
||||
"C2:Theoretische Physik:Kelvin:54\n" +
|
||||
"B2:Thermodynamik:Planck:44\n" +
|
||||
"T4:Quantenphysik:Planck:45\n" +
|
||||
"B2:Elektrodynamik:Kelvin:ABC");
|
||||
pw.close();
|
||||
Vorlesungsverzeichnis k = new Vorlesungsverzeichnis(filename);
|
||||
}
|
||||
}
|
||||
package de.joethei.hs.java2.tests;
|
||||
|
||||
import de.joethei.hs.java2.praktikum.praktikum3.TextFileFormatException;
|
||||
import de.joethei.hs.java2.praktikum.praktikum3.Vorlesung;
|
||||
import de.joethei.hs.java2.praktikum.praktikum3.Vorlesungsverzeichnis;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.*;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
public class VorlesungsverzeichnisTest2 {
|
||||
private String filename = "src/main/resources/praktikum3/vorlesungen-db.txt";
|
||||
private PrintWriter pw;
|
||||
|
||||
Class<Vorlesung> c = Vorlesung.class; // Klasse Vorlesung vorhanden?
|
||||
|
||||
@Before
|
||||
public void setUp() throws IOException
|
||||
{
|
||||
pw = new PrintWriter(filename);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Titles() throws IOException, TextFileFormatException
|
||||
{
|
||||
List<String> al = new ArrayList<>();
|
||||
|
||||
al.add("Elektrodynamik");
|
||||
al.add("Quantenmechanik");
|
||||
al.add("Quantenphysik");
|
||||
al.add("Relativitätstheorie");
|
||||
al.add("Theoretische Physik");
|
||||
al.add("Thermodynamik");
|
||||
|
||||
pw.print(
|
||||
"A1:Relativitätstheorie:Einstein:15\n" +
|
||||
"B2:Quantenmechanik:Heisenberg:17\n" +
|
||||
"C2:Quantenphysik:Planck:5\n" +
|
||||
"T4:Thermodynamik:Kelvin:78\n" +
|
||||
"C2:Theoretische Physik:Kelvin:54\n" +
|
||||
"B2:Thermodynamik:Planck:44\n" +
|
||||
"T4:Quantenphysik:Planck:45\n" +
|
||||
"B2:Elektrodynamik:Kelvin:34");
|
||||
pw.close();
|
||||
|
||||
|
||||
Vorlesungsverzeichnis l = new Vorlesungsverzeichnis(filename);
|
||||
// System.out.println(al);
|
||||
// System.out.println(l.titles());
|
||||
assertEquals(al,l.titles());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void Workaholics() throws IOException, TextFileFormatException
|
||||
{
|
||||
Set<String> s = new HashSet<>();
|
||||
|
||||
s.add("Planck");
|
||||
s.add("Kelvin");
|
||||
|
||||
pw.print(
|
||||
"A1:Relativitätstheorie:Einstein:15\n" +
|
||||
"B2:Quantenmechanik:Heisenberg:17\n" +
|
||||
"C2:Quantenphysik:Planck:5\n" +
|
||||
"T4:Thermodynamik:Kelvin:78\n" +
|
||||
"C2:Theoretische Physik:Kelvin:54\n" +
|
||||
"B2:Thermodynamik:Planck:44\n" +
|
||||
"T4:Quantenphysik:Planck:45\n" +
|
||||
"B2:Elektrodynamik:Kelvin:34");
|
||||
pw.close();
|
||||
|
||||
|
||||
Vorlesungsverzeichnis l = new Vorlesungsverzeichnis(filename);
|
||||
// System.out.println(s);
|
||||
// System.out.println(l.workaholics());
|
||||
assertEquals(s,l.workaholics());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void GroupToTitles() throws IOException, TextFileFormatException
|
||||
{
|
||||
Map<String, List<String>> map2 = new HashMap<>();
|
||||
List<String> s1 = new ArrayList<>();
|
||||
List<String> s2 = new ArrayList<>();
|
||||
List<String> s3a = new ArrayList<>();
|
||||
List<String> s3b = new ArrayList<>();
|
||||
List<String> s4a = new ArrayList<>();
|
||||
List<String> s4b = new ArrayList<>();
|
||||
|
||||
s1.add("Relativitätstheorie");
|
||||
map2.put("A1",s1);
|
||||
s2.add("Quantenmechanik");
|
||||
s2.add("Thermodynamik");
|
||||
s2.add("Elektrodynamik");
|
||||
map2.put("B2",s2);
|
||||
s3a.add("Quantenphysik");
|
||||
s3a.add("Theoretische Physik");
|
||||
s3b.add("Theoretische Physik");
|
||||
s3b.add("Quantenphysik");
|
||||
map2.put("C2",s3a);
|
||||
s4a.add("Thermodynamik");
|
||||
s4a.add("Quantenphysik");
|
||||
map2.put("T4",s4a);
|
||||
s4b.add("Quantenphysik");
|
||||
s4b.add("Thermodynamik");
|
||||
|
||||
pw.print(
|
||||
"A1:Relativitätstheorie:Einstein:15\n" +
|
||||
"B2:Quantenmechanik:Heisenberg:17\n" +
|
||||
"C2:Quantenphysik:Planck:5\n" +
|
||||
"T4:Thermodynamik:Kelvin:78\n" +
|
||||
"C2:Theoretische Physik:Kelvin:54\n" +
|
||||
"B2:Thermodynamik:Planck:44\n" +
|
||||
"T4:Quantenphysik:Planck:45\n" +
|
||||
"B2:Elektrodynamik:Kelvin:34");
|
||||
pw.close();
|
||||
|
||||
Vorlesungsverzeichnis l = new Vorlesungsverzeichnis(filename);
|
||||
// System.out.println(map2);
|
||||
// System.out.println(l.groupToTitles());
|
||||
// assertEquals(map2,l.groupToTitles());
|
||||
assertEquals(s1, l.groupToTitles().get("A1"));
|
||||
assertTrue(s3a.equals(l.groupToTitles().get("C2")) || s3b.equals(l.groupToTitles().get("C2")));
|
||||
assertTrue(s4a.equals(l.groupToTitles().get("T4")) || s4b.equals(l.groupToTitles().get("T4")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void multipleTitles() throws IOException, TextFileFormatException
|
||||
{
|
||||
Map<String, List<String>> map2 = new HashMap<>();
|
||||
List<String> s1a = new ArrayList<>();
|
||||
List<String> s1b = new ArrayList<>();
|
||||
|
||||
s1a.add("Kelvin");
|
||||
s1a.add("Planck");
|
||||
s1b.add("Planck");
|
||||
s1b.add("Kelvin");
|
||||
map2.put("Thermodynamik",s1a);
|
||||
|
||||
pw.print(
|
||||
"A1:Relativitätstheorie:Einstein:15\n" +
|
||||
"B2:Quantenmechanik:Heisenberg:17\n" +
|
||||
"C2:Quantenphysik:Planck:5\n" +
|
||||
"T4:Thermodynamik:Kelvin:78\n" +
|
||||
"C2:Theoretische Physik:Kelvin:54\n" +
|
||||
"B2:Thermodynamik:Planck:44\n" +
|
||||
"T4:Quantenphysik:Planck:45\n" +
|
||||
"B2:Elektrodynamik:Kelvin:34");
|
||||
pw.close();
|
||||
|
||||
|
||||
Vorlesungsverzeichnis l = new Vorlesungsverzeichnis(filename);
|
||||
// System.out.println(map2);
|
||||
// System.out.println(l.multipleTitles());
|
||||
// assertEquals(map2,l.multipleTitles());
|
||||
assertTrue(s1a.equals(l.multipleTitles().get("Thermodynamik")) || s1b.equals(l.multipleTitles().get("Thermodynamik")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void descendingTitles() throws IOException, TextFileFormatException
|
||||
{
|
||||
{
|
||||
List<String> al = new ArrayList<>();
|
||||
|
||||
al.add("Thermodynamik");
|
||||
al.add("Theoretische Physik");
|
||||
al.add("Quantenphysik");
|
||||
al.add("Thermodynamik");
|
||||
al.add("Elektrodynamik");
|
||||
al.add("Quantenmechanik");
|
||||
al.add("Relativitätstheorie");
|
||||
al.add("Quantenphysik");
|
||||
|
||||
pw.print(
|
||||
"A1:Relativitätstheorie:Einstein:15\n" +
|
||||
"B2:Quantenmechanik:Heisenberg:17\n" +
|
||||
"C2:Quantenphysik:Planck:5\n" +
|
||||
"T4:Thermodynamik:Kelvin:78\n" +
|
||||
"C2:Theoretische Physik:Kelvin:54\n" +
|
||||
"B2:Thermodynamik:Planck:44\n" +
|
||||
"T4:Quantenphysik:Planck:45\n" +
|
||||
"B2:Elektrodynamik:Kelvin:34");
|
||||
pw.close();
|
||||
|
||||
Vorlesungsverzeichnis l = new Vorlesungsverzeichnis(filename);
|
||||
// System.out.println(al);
|
||||
// System.out.println(l.descendingTitles());
|
||||
assertEquals(al,l.descendingTitles());
|
||||
}
|
||||
}
|
||||
|
||||
@Test(expected=TextFileFormatException.class)
|
||||
public void Liste_zu_kurz() throws IOException, TextFileFormatException {
|
||||
pw.print(
|
||||
"C2:Theoretische Physik:Kelvin:54\n" +
|
||||
"B2:Thermodynamik:Planck\n" +
|
||||
"T4:Quantenphysik:Planck:45\n" +
|
||||
"B2:Elektrodynamik:Kelvin:34");
|
||||
pw.close();
|
||||
Vorlesungsverzeichnis k = new Vorlesungsverzeichnis(filename);
|
||||
}
|
||||
|
||||
@Test(expected=TextFileFormatException.class)
|
||||
public void Liste_zu_lang() throws IOException, TextFileFormatException {
|
||||
pw.print(
|
||||
"C2:Theoretische Physik:Kelvin:54:55\n" +
|
||||
"B2:Thermodynamik:Planck:44\n" +
|
||||
"T4:Quantenphysik:Planck:45\n" +
|
||||
"B2:Elektrodynamik:Kelvin:34");
|
||||
pw.close();
|
||||
Vorlesungsverzeichnis k = new Vorlesungsverzeichnis(filename);
|
||||
}
|
||||
|
||||
@Test(expected=TextFileFormatException.class)
|
||||
public void Listenfeld_leer() throws IOException, TextFileFormatException {
|
||||
pw.print(
|
||||
"C2:Theoretische Physik:Kelvin:54\n" +
|
||||
"B2:Thermodynamik:Planck:44\n" +
|
||||
":Quantenphysik:Planck:45\n" +
|
||||
"B2:Elektrodynamik:Kelvin:34");
|
||||
pw.close();
|
||||
Vorlesungsverzeichnis k = new Vorlesungsverzeichnis(filename);
|
||||
}
|
||||
|
||||
@Test(expected=TextFileFormatException.class)
|
||||
public void Teilnehmerzahl_keine_Zahl() throws IOException, TextFileFormatException {
|
||||
pw.print(
|
||||
"C2:Theoretische Physik:Kelvin:54\n" +
|
||||
"B2:Thermodynamik:Planck:44\n" +
|
||||
"T4:Quantenphysik:Planck:45\n" +
|
||||
"B2:Elektrodynamik:Kelvin:ABC");
|
||||
pw.close();
|
||||
Vorlesungsverzeichnis k = new Vorlesungsverzeichnis(filename);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user