diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/network/ClientService.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/network/ClientService.java index 9c0ffdd..0ff4054 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/network/ClientService.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/network/ClientService.java @@ -247,8 +247,7 @@ public class ClientService { // Allow primitive values to contain hyphens (UUIDs) in addition to // digits/words/colons static Pattern responseRex = - Pattern.compile( - "(?\\w+)=(('(?([^']|\\')+)')|(?[+-]?[-\\d\\w:]+))"); + Pattern.compile("(?\\w+)=(('(?([^']|\\')+)')|(?[^ ]+))"); /** * Removes escape characters from a string, specifically converting escaped single quotes (\') diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/chatui/ChatViewController.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/chatui/ChatViewController.java index 7b0593f..d8fa0f8 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/chatui/ChatViewController.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/chatui/ChatViewController.java @@ -79,6 +79,9 @@ public class ChatViewController implements Initializable { public void sendMessage() { SoundManager.getInstance().playButtonClick(); String message = inputField.getText().trim(); + + message = message.replace("'", " "); + if (!message.isEmpty()) { inputField.clear(); String currentUsername = controller.getCurrentUsername(); diff --git a/src/main/resources/ui-structure/components/chatui/chatbox.fxml b/src/main/resources/ui-structure/components/chatui/chatbox.fxml index 2a6c526..8475cd6 100644 --- a/src/main/resources/ui-structure/components/chatui/chatbox.fxml +++ b/src/main/resources/ui-structure/components/chatui/chatbox.fxml @@ -16,9 +16,9 @@ - diff --git a/src/test/java/ch/unibas/dmi/dbis/cs108/casono/client/network/ClientServiceTest.java b/src/test/java/ch/unibas/dmi/dbis/cs108/casono/client/network/ClientServiceTest.java new file mode 100644 index 0000000..46b5718 --- /dev/null +++ b/src/test/java/ch/unibas/dmi/dbis/cs108/casono/client/network/ClientServiceTest.java @@ -0,0 +1,56 @@ +package ch.unibas.dmi.dbis.cs108.casono.client.network; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import ch.unibas.dmi.dbis.cs108.casono.server.network.command.parsing.RequestParameter; +import java.util.*; +import org.junit.jupiter.api.Test; + +public class ClientServiceTest { + + @Test + public void parsingResponse() { + ArrayList params = new ArrayList<>(); + + params.add(new RequestParameter("KEY", "VALUE")); + params.add( + new RequestParameter( + "STANDARD_TEXT", + "Lorem ipsum dolor sit amet, consectetur adipiscing elit")); + params.add(new RequestParameter("TEXT_BASED_EMOJI_WITHOUT_QUOTATION_MARKS", ";-)")); + params.add( + new RequestParameter("TEXT_WITH_QUOTATION_MARKS", "SOMEBODY SAYS: 'HALLO WELT'")); + params.add(new RequestParameter("NUMBERS", "123456789")); + params.add(new RequestParameter("SOME_SPECIAL_CHARACTERS", "°^!§$%&/()=[]}?*+~'#`")); + params.add(new RequestParameter("WRONG_CHARACTERS", "# * ~ +")); + params.add(new RequestParameter("WRONG_TEXT", "HELLO WORLD")); + + ArrayList paramsAsResponseLines = new ArrayList<>(); + + for (RequestParameter parameter : params) { + if (!parameter.key().equals("WRONG_TEXT") + && !parameter.key().equals("WRONG_CHARACTERS") + && parameter.value().contains(" ")) { + String newValue = "'" + parameter.value() + "'"; + paramsAsResponseLines.add(String.format("%s=%s", parameter.key(), newValue)); + } else { + paramsAsResponseLines.add( + String.format("%s=%s", parameter.key(), parameter.value())); + } + } + + assertEquals(8, paramsAsResponseLines.size()); + + List msgRes = + new ArrayList<>(ClientService.convertToRequestParameters(paramsAsResponseLines)); + + assertEquals(6, msgRes.size()); + + for (int i = 0; i < 6; i++) { + assertEquals(params.get(i), msgRes.get(i)); + } + + assert (!msgRes.contains(params.get(6))); + assert (!msgRes.contains(params.get(7))); + } +}