Skip to content

Commit 16d4c20

Browse files
committed
add tests + fix Logger when logging location
1 parent edde796 commit 16d4c20

File tree

10 files changed

+112
-2
lines changed

10 files changed

+112
-2
lines changed

net.lecousin.core/src/main/java/net/lecousin/framework/log/Logger.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,12 @@ private void logMessage(Level level, String message, Throwable t) {
4545
log.threadName = Thread.currentThread().getName();
4646
if (appender.needsLocation()) {
4747
StackTraceElement[] stack = new Exception().getStackTrace();
48-
if (stack != null && stack.length > 1) {
49-
log.location = stack[1];
48+
if (stack != null) {
49+
for (int i = 0; i < stack.length; ++i) {
50+
if (Logger.class.getName().equals(stack[i].getClassName())) continue;
51+
log.location = stack[i];
52+
break;
53+
}
5054
}
5155
}
5256
factory.thread.log(appender, log);
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package net.lecousin.framework.core.tests.locale;
2+
3+
import net.lecousin.framework.core.test.LCCoreAbstractTest;
4+
import net.lecousin.framework.locale.CompositeLocalizable;
5+
import net.lecousin.framework.locale.LocalizableString;
6+
7+
import org.junit.Test;
8+
9+
public class TestCompositeLocalizable extends LCCoreAbstractTest {
10+
11+
@Test(timeout=30000)
12+
public void test() throws Exception {
13+
TestILocalizableString.test(new CompositeLocalizable(" * ", new LocalizableString("b", "name"), new LocalizableString("b", "file")), "name * file", "nom * fichier");
14+
}
15+
16+
}

net.lecousin.core/src/test/java/net/lecousin/framework/core/tests/locale/TestFixedLocalizedString.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,16 @@
33
import net.lecousin.framework.core.test.LCCoreAbstractTest;
44
import net.lecousin.framework.locale.FixedLocalizedString;
55

6+
import org.junit.Assert;
67
import org.junit.Test;
78

89
public class TestFixedLocalizedString extends LCCoreAbstractTest {
910

1011
@Test(timeout=30000)
1112
public void test() throws Exception {
1213
TestILocalizableString.test(new FixedLocalizedString("it's fixed"), "it's fixed", "it's fixed");
14+
Assert.assertTrue(new FixedLocalizedString("test").equals(new FixedLocalizedString("test")));
15+
Assert.assertEquals(new FixedLocalizedString("test").hashCode(), new FixedLocalizedString("test").hashCode());
1316
}
1417

1518
}

net.lecousin.core/src/test/java/net/lecousin/framework/core/tests/locale/TestILocalizableString.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,21 @@ public class TestILocalizableString {
88

99
public static void test(ILocalizableString str, String expectedEnglish, String expectedFrench) throws Exception {
1010
Assert.assertEquals(expectedEnglish, str.localizeSync("en"));
11+
Assert.assertEquals(expectedEnglish, str.localizeSync(new String[] { "en" }));
12+
Assert.assertEquals(expectedEnglish, str.localizeSync("en-US"));
13+
Assert.assertEquals(expectedEnglish, str.localizeSync(new String[] { "en", "US" }));
1114
Assert.assertEquals(expectedFrench, str.localizeSync("fr"));
15+
Assert.assertEquals(expectedFrench, str.localizeSync(new String[] { "fr" }));
16+
Assert.assertEquals(expectedFrench, str.localizeSync("fr-FR"));
17+
Assert.assertEquals(expectedFrench, str.localizeSync(new String[] { "fr", "FR" }));
1218
Assert.assertEquals(expectedEnglish, str.localize("en").blockResult(0));
19+
Assert.assertEquals(expectedEnglish, str.localize(new String[] { "en" }).blockResult(0));
20+
Assert.assertEquals(expectedEnglish, str.localize("en-US").blockResult(0));
21+
Assert.assertEquals(expectedEnglish, str.localize(new String[] { "en", "US" }).blockResult(0));
1322
Assert.assertEquals(expectedFrench, str.localize("fr").blockResult(0));
23+
Assert.assertEquals(expectedFrench, str.localize(new String[] { "fr" }).blockResult(0));
24+
Assert.assertEquals(expectedFrench, str.localize("fr-FR").blockResult(0));
25+
Assert.assertEquals(expectedFrench, str.localize(new String[] { "fr", "FR" }).blockResult(0));
1426
}
1527

1628
}

net.lecousin.core/src/test/java/net/lecousin/framework/core/tests/locale/TestLocalizableString.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,16 @@
33
import net.lecousin.framework.core.test.LCCoreAbstractTest;
44
import net.lecousin.framework.locale.LocalizableString;
55

6+
import org.junit.Assert;
67
import org.junit.Test;
78

89
public class TestLocalizableString extends LCCoreAbstractTest {
910

1011
@Test(timeout=30000)
1112
public void test() throws Exception {
1213
TestILocalizableString.test(new LocalizableString("b", "invalid _", new LocalizableString("b", "file"), "test"), "invalid file: test", "fichier invalide: test");
14+
Assert.assertTrue(new LocalizableString("b", "file").equals(new LocalizableString("b", "file")));
15+
Assert.assertEquals(new LocalizableString("b", "file").hashCode(), new LocalizableString("b", "file").hashCode());
1316
}
1417

1518
}

net.lecousin.core/src/test/java/net/lecousin/framework/core/tests/locale/TestLocalizableStringBuffer.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ public class TestLocalizableStringBuffer extends LCCoreAbstractTest {
1111
@Test(timeout=30000)
1212
public void test() throws Exception {
1313
TestILocalizableString.test(new LocalizableStringBuffer("start/", new LocalizableString("b", "name"), "/end"), "start/name/end", "start/nom/end");
14+
LocalizableStringBuffer b = new LocalizableStringBuffer("#");
15+
b.add(new LocalizableString("b", "name"));
16+
b.add(Integer.valueOf(51));
17+
TestILocalizableString.test(b, "#name51", "#nom51");
1418
}
1519

1620
}

net.lecousin.core/src/test/java/net/lecousin/framework/core/tests/log/Loggers.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,6 @@ public static class Logger4 {}
1212

1313
public static class Logger5 {}
1414

15+
public static class LoggerForPattern {}
16+
1517
}

net.lecousin.core/src/test/java/net/lecousin/framework/core/tests/log/TestLoggers.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.io.File;
44
import java.nio.charset.StandardCharsets;
5+
import java.util.Calendar;
56

67
import org.junit.Assert;
78
import org.junit.Test;
@@ -16,6 +17,7 @@
1617
import net.lecousin.framework.core.tests.log.Loggers.Logger3;
1718
import net.lecousin.framework.core.tests.log.Loggers.Logger4;
1819
import net.lecousin.framework.core.tests.log.Loggers.Logger5;
20+
import net.lecousin.framework.core.tests.log.Loggers.LoggerForPattern;
1921
import net.lecousin.framework.io.IOUtil;
2022
import net.lecousin.framework.log.Logger;
2123
import net.lecousin.framework.log.LoggerFactory;
@@ -71,6 +73,38 @@ public void test() throws Exception {
7173
Assert.assertEquals(2, StringUtil.count(log, "this is debug"));
7274
Assert.assertEquals(1, StringUtil.count(log, "this is trace"));
7375

76+
factory.getLogger(LoggerForPattern.class).debug("test");
77+
factory.flush().blockThrow(0);
78+
log = IOUtil.readFullyAsStringSync(new File(dir, "logPattern.txt"), StandardCharsets.UTF_8);
79+
int i = log.indexOf("@@ ");
80+
Assert.assertTrue(i >= 0);
81+
log = log.substring(i + 3);
82+
i = log.indexOf(" @@");
83+
Assert.assertTrue(i >= 0);
84+
log = log.substring(0, i);
85+
StringBuilder expected = new StringBuilder();
86+
Calendar cal = Calendar.getInstance();
87+
expected.append(cal.get(Calendar.YEAR)).append('-');
88+
StringUtil.paddingLeft(expected, Integer.toString(cal.get(Calendar.MONTH) + 1), 2, '0');
89+
expected.append('-');
90+
StringUtil.paddingLeft(expected, Integer.toString(cal.get(Calendar.DAY_OF_MONTH)), 2, '0');
91+
expected.append(' ');
92+
expected.append(Thread.currentThread().getName());
93+
expected.append(' ');
94+
expected.append("DEBUG");
95+
expected.append(' ');
96+
expected.append(LoggerForPattern.class.getName());
97+
expected.append(' ');
98+
expected.append(TestLoggers.class.getName());
99+
expected.append(' ');
100+
expected.append("test");
101+
expected.append(' ');
102+
expected.append(76);
103+
expected.append(' ');
104+
expected.append("TestLoggers.java");
105+
expected.append(' ');
106+
expected.append("test");
107+
Assert.assertEquals(expected.toString(), log);
74108
}
75109

76110
private static void produceLogs(Logger log) {
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package net.lecousin.framework.core.tests.util;
2+
3+
import net.lecousin.framework.core.test.LCCoreAbstractTest;
4+
import net.lecousin.framework.util.CommandLineUtil;
5+
6+
import org.junit.Assert;
7+
import org.junit.Test;
8+
9+
public class TestCommandLineUtil extends LCCoreAbstractTest {
10+
11+
@Test(timeout=15000)
12+
public void testGetOptionValue() {
13+
String[] args = new String[] { "hello", "-test", "world", "-aa=bb", "-hello=world", "cc=dd" };
14+
Assert.assertNull(CommandLineUtil.getOptionValue(args, "toto"));
15+
Assert.assertNull(CommandLineUtil.getOptionValue(args, "test"));
16+
Assert.assertNull(CommandLineUtil.getOptionValue(args, "world"));
17+
Assert.assertNull(CommandLineUtil.getOptionValue(args, "cc"));
18+
Assert.assertEquals("bb", CommandLineUtil.getOptionValue(args, "aa"));
19+
Assert.assertEquals("world", CommandLineUtil.getOptionValue(args, "hello"));
20+
}
21+
22+
}

net.lecousin.core/src/test/resources/log/test-logging.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,19 @@
4242
<AppenderRef name="appender2"/>
4343
<AppenderRef name="appender4"/>
4444
</Appender>
45+
<Appender
46+
name="appenderForPattern"
47+
class="net.lecousin.framework.log.appenders.RollingFileAppender"
48+
level="TRACE"
49+
pattern="@@ %d{yyyy-MM-dd} %t %level %logger %C %M %L %f %m @@"
50+
size="30K"
51+
files="1"
52+
path="${net.lecousin.application.log.directory}/logPattern.txt"
53+
/>
4554
<Logger name="net.lecousin.framework.core.tests.log.Loggers$Logger1" appender="appender1" level="DEBUG"></Logger>
4655
<Logger name="net.lecousin.framework.core.tests.log.Loggers$Logger2" appender="appender2" level="INFO"></Logger>
4756
<Logger name="net.lecousin.framework.core.tests.log.Loggers$Logger3" appender="appender3" level="DEBUG"></Logger>
4857
<Logger name="net.lecousin.framework.core.tests.log.Loggers$Logger4" appender="appender4" level="TRACE"></Logger>
4958
<Logger name="net.lecousin.framework.core.tests.log.Loggers$Logger5" appender="appender5" level="WARN"></Logger>
59+
<Logger name="net.lecousin.framework.core.tests.log.Loggers$LoggerForPattern" appender="appenderForPattern" level="TRACE"></Logger>
5060
</LoggingConfiguration>

0 commit comments

Comments
 (0)