X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2Ftest%2FStringUtilsTest.java;h=df2ed5fb9ddb49b2afd7dfa6133424f26fc9648c;hb=5b46737cf885bd7f5f93bd3a0007795538a8d10d;hp=5c939575059b4e2a87805f718467bc8eee56d396;hpb=451f434bd60a354ae5928f5da36b76f24b7b423b;p=nikiroo-utils.git diff --git a/src/be/nikiroo/utils/test/StringUtilsTest.java b/src/be/nikiroo/utils/test/StringUtilsTest.java index 5c93957..df2ed5f 100644 --- a/src/be/nikiroo/utils/test/StringUtilsTest.java +++ b/src/be/nikiroo/utils/test/StringUtilsTest.java @@ -1,7 +1,9 @@ package be.nikiroo.utils.test; +import java.util.Arrays; import java.util.Date; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -76,7 +78,7 @@ class StringUtilsTest extends TestLauncher { true, data.trim().equals(result.trim())); result = StringUtils.padString(data, size, false, - Alignment.End); + Alignment.RIGHT); if (size > data.length()) { assertEquals( "Padding a String to the end should work as expected", @@ -84,7 +86,25 @@ class StringUtilsTest extends TestLauncher { } result = StringUtils.padString(data, size, false, - Alignment.Center); + Alignment.JUSTIFY); + if (size > data.length()) { + String unspacedData = data.trim(); + String unspacedResult = result.trim(); + for (int i = 0; i < size; i++) { + unspacedData = unspacedData.replace(" ", " "); + unspacedResult = unspacedResult.replace(" ", + " "); + } + + assertEquals( + "Justified text trimmed with all spaces collapsed " + + "sould be identical to original text " + + "trimmed with all spaces collapsed", + unspacedData, unspacedResult); + } + + result = StringUtils.padString(data, size, false, + Alignment.CENTER); if (size > data.length()) { int before = 0; for (int i = 0; i < result.length() @@ -120,6 +140,66 @@ class StringUtilsTest extends TestLauncher { } }); + addTest(new TestCase("Justifying") { + @Override + public void test() throws Exception { + Map>>> source = new HashMap>>>(); + addValue(source, Alignment.LEFT, "testy", -1, "testy"); + addValue(source, Alignment.RIGHT, "testy", -1, "testy"); + addValue(source, Alignment.CENTER, "testy", -1, "testy"); + addValue(source, Alignment.JUSTIFY, "testy", -1, "testy"); + addValue(source, Alignment.LEFT, "testy", 5, "testy"); + addValue(source, Alignment.LEFT, "testy", 3, "te-", "sty"); + addValue(source, Alignment.LEFT, + "Un petit texte qui se mettra sur plusieurs lignes", + 10, "Un petit", "texte qui", "se mettra", "sur", + "plusieurs", "lignes"); + addValue(source, Alignment.LEFT, + "Un petit texte qui se mettra sur plusieurs lignes", 7, + "Un", "petit", "texte", "qui se", "mettra", "sur", + "plusie-", "urs", "lignes"); + addValue(source, Alignment.RIGHT, + "Un petit texte qui se mettra sur plusieurs lignes", 7, + " Un", " petit", " texte", " qui se", " mettra", + " sur", "plusie-", " urs", " lignes"); + addValue(source, Alignment.CENTER, + "Un petit texte qui se mettra sur plusieurs lignes", 7, + " Un ", " petit ", " texte ", "qui se ", "mettra ", + " sur ", "plusie-", " urs ", "lignes "); + addValue(source, Alignment.JUSTIFY, + "Un petit texte qui se mettra sur plusieurs lignes", 7, + "Un pet-", "it tex-", "te qui", "se met-", "tra sur", + "plusie-", "urs li-", "gnes"); + addValue(source, Alignment.JUSTIFY, + "Un petit texte qui se mettra sur plusieurs lignes", + 14, "Un petit", "texte qui se", + "mettra sur", "plusieurs lig-", "nes"); + addValue(source, Alignment.JUSTIFY, "le dash-test", 9, + "le dash-", "test"); + + for (String data : source.keySet()) { + for (int size : source.get(data).keySet()) { + Alignment align = source.get(data).get(size).getKey(); + List values = source.get(data).get(size) + .getValue(); + + List result = StringUtils.justifyText(data, + size, align); + + // System.out.println("[" + data + " (" + size + ")" + + // "] -> ["); + // for (int i = 0; i < result.size(); i++) { + // String resultLine = result.get(i); + // System.out.println(i + ": " + resultLine); + // } + // System.out.println("]"); + + assertEquals(values, result); + } + } + } + }); + addTest(new TestCase("unhtml") { @Override public void test() throws Exception { @@ -143,10 +223,76 @@ class StringUtilsTest extends TestLauncher { @Override public void test() throws Exception { String orig = "test"; - String zipped = StringUtils.zip64(orig); - String unzipped = StringUtils.unzip64(zipped); + String zipped = StringUtils.base64(orig, true); + String unzipped = StringUtils.unbase64s(zipped, true); assertEquals(orig, unzipped); } }); + + addTest(new TestCase("format/toNumber simple") { + @Override + public void test() throws Exception { + assertEquals(263l, StringUtils.toNumber("263")); + assertEquals(21200l, StringUtils.toNumber("21200")); + assertEquals(0l, StringUtils.toNumber("0")); + assertEquals("263", StringUtils.formatNumber(263l)); + assertEquals("21k", StringUtils.formatNumber(21000l)); + assertEquals("0", StringUtils.formatNumber(0l)); + } + }); + + addTest(new TestCase("format/toNumber not 000") { + @Override + public void test() throws Exception { + assertEquals(263200l, StringUtils.toNumber("263.2k")); + assertEquals(42000l, StringUtils.toNumber("42.0k")); + assertEquals(12000000l, StringUtils.toNumber("12M")); + assertEquals("263k", StringUtils.formatNumber(263012l)); + assertEquals("42k", StringUtils.formatNumber(42012l)); + assertEquals("12M", StringUtils.formatNumber(12012121l)); + } + }); + + addTest(new TestCase("format/toNumber decimals") { + @Override + public void test() throws Exception { + assertEquals(263200l, StringUtils.toNumber("263.2k")); + assertEquals(1200l, StringUtils.toNumber("1.2k")); + assertEquals(42700000l, StringUtils.toNumber("42.7M")); + assertEquals(1220l, StringUtils.toNumber("1.22k")); + assertEquals(1432l, StringUtils.toNumber("1.432k")); + assertEquals("1.3k", StringUtils.formatNumber(1300l, 1)); + assertEquals("263.2020k", StringUtils.formatNumber(263202l, 4)); + assertEquals("1.26k", StringUtils.formatNumber(1267l, 2)); + assertEquals("42.7M", StringUtils.formatNumber(42712121l, 1)); + } + }); + } + + static private void addValue( + Map>>> source, + final Alignment align, String input, int size, + final String... result) { + if (!source.containsKey(input)) { + source.put(input, + new HashMap>>()); + } + + source.get(input).put(size, new Entry>() { + @Override + public Alignment getKey() { + return align; + } + + @Override + public List getValue() { + return Arrays.asList(result); + } + + @Override + public List setValue(List value) { + return null; + } + }); } }