Test and refactor translateGreek

closes #55
This commit is contained in:
2015-12-15 10:32:51 +01:00
parent f1b9f19dde
commit b58a589b24
2 changed files with 78 additions and 118 deletions

View File

@@ -15,8 +15,7 @@ public final class StringTools {
/** /**
* Private constructor to prevent instantiation. * Private constructor to prevent instantiation.
*/ */
private StringTools() { private StringTools() {}
}
/** /**
* Returns a HTML formatted String, in which each line is at most lineBreak * Returns a HTML formatted String, in which each line is at most lineBreak
@@ -494,109 +493,58 @@ public final class StringTools {
public static String translateGreek(String name) { public static String translateGreek(String name) {
// Add some specific display for some greeks here // Add some specific display for some greeks here
if (name.equalsIgnoreCase("alpha")) { final String[][] mapping = {
return "\u03B1"; { "alpha", "α" },
} { "beta", "β" },
if (name.equalsIgnoreCase("beta")) { { "gamma", "γ"},
return "\u03B2"; { "gammab", "Γ"},
} { "delta", "δ"},
if (name.equalsIgnoreCase("gamma")) { { "deltab", "Δ"},
return "\u03B3"; { "epsi", "epsilon", "ε"},
} { "zeta", "ζ"},
if (name.equalsIgnoreCase("gammab")) { { "theta", "ϑ"},
return "\u0393"; { "thetab", "Θ"},
} { "iota", "ι"},
if (name.equalsIgnoreCase("delta")) { { "kappa", "κ"},
return "\u03B4"; { "lambda", "λ"},
} { "lambdab", "Λ"},
if (name.equalsIgnoreCase("deltab")) { { "rho", "ρ"},
return "\u0394"; { "sigma", "σ"},
} { "sigmab", "Σ"},
if ((name.equalsIgnoreCase("epsi")) || (name.equalsIgnoreCase("epsilon"))) { { "tau", "τ"},
return "\u03B5"; { "upsilon", "υ"},
} { "upsilonb", "ϒ"},
if (name.equalsIgnoreCase("zeta")) { { "omega", "ω"},
return "\u03B6"; { "omegab", "Ω"},
}
if (name.equalsIgnoreCase("theta")) {
return "\u03D1";
}
if (name.equalsIgnoreCase("thetab")) {
return "\u0398";
}
if (name.equalsIgnoreCase("iota")) {
return "\u03B9";
}
if (name.equalsIgnoreCase("kappa")) {
return "\u03BA";
}
if (name.equalsIgnoreCase("lambda")) {
return "\u03BB";
}
if (name.equalsIgnoreCase("lambdab")) {
return "\u039B";
}
if (name.equalsIgnoreCase("rho")) {
return "\u03C1";
}
if (name.equalsIgnoreCase("sigma")) {
return "\u03C3";
}
if (name.equalsIgnoreCase("sigmab")) {
return "\u03A3";
}
if (name.equalsIgnoreCase("tau")) {
return "\u03C4";
}
if (name.equalsIgnoreCase("upsilon")) {
return "\u03C5";
}
if (name.equalsIgnoreCase("upsilonb")) {
return "\u03D2";
}
if (name.equalsIgnoreCase("omega")) {
return "\u03C9";
}
if (name.equalsIgnoreCase("omegab")) {
return "\u03A9";
}
// these are too small // these are too small
if (name.equalsIgnoreCase("eta")) { { "eta", "η"},
return "\u03B7"; { "psi", "ψ"},
} { "psib", "Ψ"},
if (name.equalsIgnoreCase("psi")) { { "phi", "ϕ"},
return "\u03C8"; { "phib", "Φ"},
} { "chi", "χ"},
if (name.equalsIgnoreCase("psib")) { { "mu", "my", "myu", "μ"},
return "\u03A8"; { "nu", "ν"},
} { "xi", "ξ"},
if (name.equalsIgnoreCase("phi")) { { "xib", "Ξ"},
return "\u03D5"; { "pi", "π"},
} { "pib", "Π"},
if (name.equalsIgnoreCase("phib")) { };
return "\u03A6";
} for(String[] map : mapping) {
if (name.equalsIgnoreCase("chi")) { for (int i = 0; i < map.length - 1; i++) {
return "\u03C7"; Pattern p = Pattern.compile("^" + map[i] + "\\d*", Pattern.CASE_INSENSITIVE);
} Matcher m = p.matcher(name);
if ((name.equalsIgnoreCase("mu")) || (name.equalsIgnoreCase("my")) || (name.equalsIgnoreCase("myu"))) {
return "\u03BC"; // Regex: ^symbol[0-9]*
} if(m.matches()) {
if (name.equalsIgnoreCase("nu")) { Pattern replace = Pattern.compile("^" + map[i], Pattern.CASE_INSENSITIVE);
return "\u03BD"; Matcher rm = replace.matcher(name);
} // Last element contains mapping
if (name.equalsIgnoreCase("xi")) { return rm.replaceFirst(map[map.length -1 ]);
return "\u03BE"; }
} }
if (name.equalsIgnoreCase("xib")) {
return "\u039E";
}
if (name.equalsIgnoreCase("pi")) {
return "\u03C0";
}
if (name.equalsIgnoreCase("pib")) {
return "\u03A0";
} }
return name; return name;

View File

@@ -1,7 +1,5 @@
package eva2.tools; package eva2.tools;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import java.util.HashMap; import java.util.HashMap;
@@ -11,21 +9,9 @@ import static org.junit.Assert.assertEquals;
/** /**
* *
* @author becker
*/ */
public class StringToolsTest { public class StringToolsTest {
public StringToolsTest() {
}
@Before
public void setUp() {
}
@After
public void tearDown() {
}
/** /**
* Test of humaniseCamelCase method, of class StringTools. * Test of humaniseCamelCase method, of class StringTools.
*/ */
@@ -61,6 +47,7 @@ public class StringToolsTest {
map.put("thisIsAwesome", "this-is-awesome"); map.put("thisIsAwesome", "this-is-awesome");
map.put("THQIsNice", "thq-is-nice"); map.put("THQIsNice", "thq-is-nice");
map.put("iLikeABC", "i-like-abc"); map.put("iLikeABC", "i-like-abc");
map.put("THIS", "this");
String key, value; String key, value;
for (Object o : map.entrySet()) { for (Object o : map.entrySet()) {
@@ -86,4 +73,29 @@ public class StringToolsTest {
assertEquals("StringTools", StringTools.cutClassName("eva2.tools.StringTools")); assertEquals("StringTools", StringTools.cutClassName("eva2.tools.StringTools"));
assertEquals("RandomClass", StringTools.cutClassName("eva2.optimization.operator.RandomClass")); assertEquals("RandomClass", StringTools.cutClassName("eva2.optimization.operator.RandomClass"));
} }
@Test
public void testTranslateGreek() {
// Doesn't touch string without greek characters
assertEquals("Not a greek string", StringTools.translateGreek("Not a greek string"));
// Replaces greek characters irregardless of case
assertEquals("τ", StringTools.translateGreek("tau"));
assertEquals("τ", StringTools.translateGreek("Tau"));
assertEquals("τ", StringTools.translateGreek("tAU"));
// Handles multiple values for one letter
assertEquals("μ", StringTools.translateGreek("mu"));
assertEquals("μ", StringTools.translateGreek("my"));
assertEquals("μ", StringTools.translateGreek("myu"));
// Handles indices like sigma1, sigma2
assertEquals("ϕ1", StringTools.translateGreek("phi1"));
assertEquals("ϕ10", StringTools.translateGreek("phi10"));
// Doesn't mess up other strings
assertEquals("Stau", StringTools.translateGreek("Stau"));
assertEquals("taur", StringTools.translateGreek("taur"));
assertEquals("taur12", StringTools.translateGreek("taur12"));
}
} }