Skip to content

Commit 2b874f8

Browse files
author
Bytekeeper
committed
#52 Don't interpret "\n" as newline, but escape it with '\'
1 parent ec2fb60 commit 2b874f8

File tree

2 files changed

+31
-5
lines changed

2 files changed

+31
-5
lines changed

src/main/java/org/stt/persistence/stt/STTItemConverter.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ private String unescape(String activity) {
2929
if (chars[i] == 'n') {
3030
b.append('\n');
3131
} else {
32-
b.append('\\').append(chars[i]);
32+
b.append(chars[i]);
3333
}
3434
} else {
3535
b.append(next);
@@ -99,6 +99,8 @@ private void escape(StringBuilder b, String activity) {
9999
}
100100
} else if (next == '\n') {
101101
b.append("\\n");
102+
} else if (next == '\\') {
103+
b.append("\\\\");
102104
} else {
103105
b.append(next);
104106
}

src/test/java/org/stt/persistence/stt/STTItemConverterTest.java

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
/**
1212
*/
1313
public class STTItemConverterTest {
14+
private static final LocalDateTime LDT_FOR_TEST = LocalDateTime.of(2019, 1, 10, 10, 11, 12);
1415
private STTItemConverter sut = new STTItemConverter();
1516

1617
@Test(timeout = 10000)
@@ -63,8 +64,7 @@ public void shouldParseStartWithOpenEnd() {
6364
TimeTrackingItem item = sut.lineToTimeTrackingItem(lineToTest);
6465

6566
// THEN
66-
assertThat(item, is(new TimeTrackingItem("Some Activity",
67-
LocalDateTime.of(2019, 1, 10, 10, 11, 12))));
67+
assertThat(item, is(new TimeTrackingItem("Some Activity", LDT_FOR_TEST)));
6868
}
6969

7070
@Test
@@ -76,8 +76,32 @@ public void shouldParseMultilineActivity() {
7676
TimeTrackingItem item = sut.lineToTimeTrackingItem(lineToTest);
7777

7878
// THEN
79-
assertThat(item, is(new TimeTrackingItem("Some\nActivity",
80-
LocalDateTime.of(2019, 1, 10, 10, 11, 12))));
79+
assertThat(item, is(new TimeTrackingItem("Some\nActivity", LDT_FOR_TEST)));
80+
}
81+
82+
@Test
83+
public void shouldIgnoreEscapedBackslash() {
84+
// GIVEN
85+
String lineToTest = "2019-01-10_10:11:12 Some\\\\nActivity";
86+
87+
// WHEN
88+
TimeTrackingItem item = sut.lineToTimeTrackingItem(lineToTest);
89+
90+
// THEN
91+
assertThat(item, is(new TimeTrackingItem("Some\\nActivity", LDT_FOR_TEST)));
8192
}
8293

94+
@Test
95+
public void shouldEscapeBackslash() {
96+
// GIVEN
97+
TimeTrackingItem activity = new TimeTrackingItem("\\n", LDT_FOR_TEST);
98+
99+
// WHEN
100+
String line = sut.timeTrackingItemToLine(activity);
101+
102+
// THEN
103+
assertThat(line, is("2019-01-10_10:11:12 \\\\n"));
104+
}
105+
106+
83107
}

0 commit comments

Comments
 (0)