aboutsummaryrefslogtreecommitdiffstats
path: root/test/eu/equalparts/cardbase/cli/CardbaseCLITest.java
diff options
context:
space:
mode:
Diffstat (limited to 'test/eu/equalparts/cardbase/cli/CardbaseCLITest.java')
-rw-r--r--test/eu/equalparts/cardbase/cli/CardbaseCLITest.java132
1 files changed, 118 insertions, 14 deletions
diff --git a/test/eu/equalparts/cardbase/cli/CardbaseCLITest.java b/test/eu/equalparts/cardbase/cli/CardbaseCLITest.java
index 5a9aca4..0cc0cbc 100644
--- a/test/eu/equalparts/cardbase/cli/CardbaseCLITest.java
+++ b/test/eu/equalparts/cardbase/cli/CardbaseCLITest.java
@@ -2,12 +2,10 @@ package eu.equalparts.cardbase.cli;
import static org.junit.Assert.*;
-import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
-import java.io.OutputStreamWriter;
import java.io.PrintStream;
-import java.io.StringReader;
+import java.util.Scanner;
import org.junit.After;
import org.junit.AfterClass;
@@ -15,7 +13,11 @@ import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
-import eu.equalparts.cardbase.cli.CardbaseCLI;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import eu.equalparts.cardbase.cards.Card;
+import eu.equalparts.cardbase.testutils.TestFile;
+import eu.equalparts.cardbase.testutils.TestUtils;
public class CardbaseCLITest {
@@ -24,12 +26,12 @@ public class CardbaseCLITest {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
- System.setOut(new PrintStream(new OutputStream() {
- @Override
- public void write(int b) throws IOException {
- output.append((char) b);
- }
- }, true));
+// System.setOut(new PrintStream(new OutputStream() {
+// @Override
+// public void write(int b) throws IOException {
+// output.append((char) b);
+// }
+// }, true));
}
@AfterClass
@@ -38,6 +40,7 @@ public class CardbaseCLITest {
@Before
public void setUp() throws Exception {
+ uut = new CardbaseCLI();
}
@After
@@ -45,14 +48,115 @@ public class CardbaseCLITest {
}
/***********************************************************************************
- * Constructor tests, happy path
+ * User input tests, happy path
***********************************************************************************/
@Test
- public void initialiseWithCardbaseFile() throws Exception {
- uut = new CardbaseCLI(getClass().getResource("testbase.cb").getPath());
+ public void commandAndArgumentsSeparatedBySpaces() throws Exception {
+ String[] processedInput = uut.sanitiseInput("cOmMand5 argumEnt1 argument2");
+ assertEquals("Wrong array length.", 3, processedInput.length);
+ assertEquals("cOmMand5", processedInput[0]);
+ assertEquals("argumEnt1", processedInput[1]);
+ assertEquals("argument2", processedInput[2]);
+ }
+
+ @Test
+ public void commandAndNoArguments() throws Exception {
+ String[] processedInput = uut.sanitiseInput("Someth1ng");
+ assertEquals("Wrong array length.", 1, processedInput.length);
+ assertEquals("Someth1ng", processedInput[0]);
+ }
+
+ /*
+ * Edge cases
+ */
+ @Test
+ public void blankInput() throws Exception {
+ String[] processedInput = uut.sanitiseInput("");
+ assertEquals("Wrong array length.", 1, processedInput.length);
+ assertEquals("", processedInput[0]);
+ }
+
+ @Test
+ public void onlyWhiteSpace() throws Exception {
+ String[] processedInput = uut.sanitiseInput(" ");
+
+ assertEquals("Wrong array length.", 1, processedInput.length);
+ assertEquals("", processedInput[0]);
+ }
+
+ @Test
+ public void leadingTrailingAndIntermediaryWhiteSpace() throws Exception {
+ String[] processedInput = uut.sanitiseInput(" this was a triumph ");
+
+ assertEquals("Wrong array length.", 4, processedInput.length);
+ assertEquals("this", processedInput[0]);
+ assertEquals("was", processedInput[1]);
+ assertEquals("a", processedInput[2]);
+ assertEquals("triumph", processedInput[3]);
+ }
+
+ /***********************************************************************************
+ * File name sanity tests, happy path
+ ***********************************************************************************/
+ @Test
+ public void reasonableFileNameWithoutExtension() throws Exception {
+ String processedName = uut.sanitiseFileName("f1lename");
+
+ assertEquals("f1lename.cb", processedName);
+ }
+
+ @Test
+ public void reasonableFileNameWithExtension() throws Exception {
+ String processedName = uut.sanitiseFileName("f1lename.cb");
+
+ assertEquals("f1lename.cb", processedName);
+ }
+
+ /*
+ * Edge cases
+ */
+ @Test
+ public void nameWithBrokenExtension() throws Exception {
+ String processedName = uut.sanitiseFileName("f1lename.c b");
+
+ assertEquals("f1lename.cb", processedName);
+ }
+
+ @Test
+ public void nameWithWrongExtension() throws Exception {
+ String processedName = uut.sanitiseFileName("f1lename.tar");
+
+ assertEquals("f1lename.tar.cb", processedName);
+ }
+
+ @Test
+ public void nameWithIllegalCharacters() throws Exception {
+ String processedName = uut.sanitiseFileName("f1lEnämẽ\n\t\"--._-//? \t^|#ŧ@fhw9vLL'''");
+
+ assertEquals("f1lEnm--._-fhw9vLL.cb", processedName);
+ }
+
+ /***********************************************************************************
+ * Write method tests, happy path
+ ***********************************************************************************/
+ @Test
+ public void writeCardbaseToSpecifiedFile() throws Exception {
+ try (Scanner scanner = new Scanner(getClass().getResourceAsStream("/shivandragon.json"));
+ TestFile testFile = TestUtils.createValidTestFile("testsave.cb");
+ Scanner scanner2 = new Scanner(testFile)) {
+
+ String cardJSON = scanner.useDelimiter("\\Z").next();
+ Card testCard = new ObjectMapper().readValue(cardJSON, Card.class);
+ testCard.count = 1;
+ uut.cardbase.addCard(testCard);
+
+ uut.write(testFile.getAbsolutePath());
+ String save = scanner2.useDelimiter("\\Z").next();
+ assertTrue(save.contains(cardJSON));
+
+ }
}
-
}