TextTest.java added test method for txt.index methode

This commit is contained in:
Andrin Fassbind 2021-11-05 11:35:09 +01:00
parent ae881bd8ac
commit 7d256f9915
2 changed files with 48 additions and 14 deletions

View File

@ -1,9 +1,6 @@
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.*;
public class Text {
@ -47,6 +44,12 @@ public class Text {
return true;
}
/**
* Method to get all paragraph of the existing instance.
*
* @return returns a ArrayList<String> with all text inside.
*/
public ArrayList<String> getText() {
return text;
}
@ -98,6 +101,14 @@ public class Text {
return true;
}
/**
* This method deletes a specific Paragraph. As a Parameter it uses a int.
* If the Parameter is valid it deletes the specific Pararaph otherwise returns false
*
* @param paragraphNumber
* @return False: If the int is not a valid paragraph.
* @return True: If the int is a valid paragraph number
*/
public boolean del(int paragraphNumber) {
if (paragraphExists(paragraphNumber)) {
@ -107,31 +118,54 @@ public class Text {
return false;
}
/**
* This method deletes the last paragraph in the text Array.
*
* @return True: if paragraph has been deleted.
*/
public boolean del() {
text.remove(text.size() - 1);
return true;
}
/**
* This method creates a ArrayList<String>.
* Every word which is used in the text more than 3 times
* will be added to the ArrayList with the paragraphes where the word is been used.
*
* @return ArrayList<String>
*/
public ArrayList<String> index() {
wordbook = createWordlist();
ArrayList<String> output = new ArrayList<>();
for (Map.Entry<String, ArrayList<Integer>> entry : wordbook.entrySet()) {
String key = entry.getKey();
ArrayList<Integer> values = entry.getValue();
String input = "";
if (values.get(0) >= 3) {
output.add(key);
for (int value : values) {
output.add(String.valueOf(value));
input += key + " ";
for (int i = 1; i < values.size(); i++) {
input += values.get(i) + ", ";
}
output.add(input);
}
}
return output;
}
/**
* This method counts all Words in text and adds them together with the paragraph where the word is been used to a Hashmap.
*
* @return HashMap<String, ArrayList < Integer>>
*/
private HashMap<String, ArrayList<Integer>> createWordlist() {
for (int i = 0; i < text.size(); i++) {
String[] woerter = text.get(i).trim().toLowerCase().split("[ :;.,!?><\'/]+");
for (String wort : woerter) {
String firstLetter = wort.substring(0,1);
String restLetters = wort.substring(1);
wort = firstLetter.toUpperCase()+restLetters;
ArrayList<Integer> zahlenListe;
int zähler = 1;
if (wordbook.containsKey(wort)) {
@ -147,7 +181,7 @@ public class Text {
} else {
zahlenListe = new ArrayList<>();
zahlenListe.add(1);
zahlenListe.add(zähler);
zahlenListe.add(i + 1);
wordbook.put(wort, zahlenListe);
}
}

View File

@ -1,25 +1,25 @@
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class TextTest {
Text txt;
HashMap<String, ArrayList<Integer>> hMap;
ArrayList<String> sListe;
@BeforeEach
void setup() {
txt = new Text();
hMap = new HashMap<>();
sListe = new ArrayList<>();
sListe.add("Hallo hallo zusammen");
sListe.add("Hallo wie gehts");
}
@Test
void indexTest() {
txt.add("Hallo Hallo zusammen !test!");
txt.add("Hallo, wie zusammen");
txt.add("Hallo,wie wie zusammen");
sListe= txt.index();
Assertions.assertEquals("Hallo 1, 2, 3, ",sListe.get(0));
}
}