From 07066578d5af5bdaf014a42751c302de22984ead Mon Sep 17 00:00:00 2001 From: Fabian Becker Date: Mon, 14 Dec 2015 15:46:54 +0100 Subject: [PATCH] Test Mnemonic, simplify class refs #53 --- src/main/java/eva2/gui/Mnemonic.java | 16 ++++----- src/test/java/eva2/gui/MnemonicTest.java | 44 ++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 10 deletions(-) create mode 100644 src/test/java/eva2/gui/MnemonicTest.java diff --git a/src/main/java/eva2/gui/Mnemonic.java b/src/main/java/eva2/gui/Mnemonic.java index 0833bc59..e2c2b94b 100644 --- a/src/main/java/eva2/gui/Mnemonic.java +++ b/src/main/java/eva2/gui/Mnemonic.java @@ -5,30 +5,26 @@ package eva2.gui; */ class Mnemonic { - private char mnemonic; - private String text; + private final char mnemonic; + private final String text; /** * */ public Mnemonic(String s) { - setString(s); - } - - /** - * - */ - public void setString(String s) { StringBuilder buf = new StringBuilder(s); + char c = Character.MIN_VALUE; + for (int i = 0; i < buf.length(); i++) { if (buf.charAt(i) == '&') { buf.deleteCharAt(i); i++; if (i < buf.length() && buf.charAt(i) != '&') { - mnemonic = buf.charAt(i - 1); + c = buf.charAt(i - 1); } } } + mnemonic = c; text = buf.toString(); } diff --git a/src/test/java/eva2/gui/MnemonicTest.java b/src/test/java/eva2/gui/MnemonicTest.java new file mode 100644 index 00000000..bcaeebc3 --- /dev/null +++ b/src/test/java/eva2/gui/MnemonicTest.java @@ -0,0 +1,44 @@ +package eva2.gui; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class MnemonicTest { + + @Test + public void testMnemonic() throws Exception { + Mnemonic m = new Mnemonic("No mnemonic"); + + // String without ampersand does not have a mnemonic + assertEquals(0, m.getMnemonic()); + + // Detects ampersand at beginning + m = new Mnemonic("&Fancy"); + assertEquals('F', m.getMnemonic()); + + // Detects ampersand in the middle + m = new Mnemonic("Super&fancy"); + assertEquals('f', m.getMnemonic()); + + // Handles ampersand at the end + m = new Mnemonic("Hellyea&"); + assertEquals(0, m.getMnemonic()); + } + + @Test + public void testGetMnemonic() throws Exception { + Mnemonic m = new Mnemonic("Super &great"); + assertEquals('g', m.getMnemonic()); + } + + @Test + public void testGetText() throws Exception { + Mnemonic m1 = new Mnemonic("The text"); + assertEquals("The text", m1.getText()); + + Mnemonic m2 = new Mnemonic("&Mnemonic"); + assertEquals("Mnemonic", m2.getText()); + + } +} \ No newline at end of file