-
Notifications
You must be signed in to change notification settings - Fork 0
/
diary.test.ts
193 lines (191 loc) · 7.36 KB
/
diary.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
import { format, isDiaryPage, toDate, toTitle } from "./diary.ts";
import { assert, assertEquals } from "./deps/testing.ts";
const testData: [string, Date | undefined][] = [
["日刊記録sheet 2021-12-11", new Date(2021, 11, 11)],
["日刊記録sheet 2021-02-11", new Date(2021, 1, 11)],
["日刊記録sheet 2021-12-11", undefined],
];
Deno.test("isDiaryPage()", () =>
testData.forEach(([text, date]) =>
assert(date !== undefined ? isDiaryPage(text) : !isDiaryPage(text))
));
Deno.test("toDate()", () =>
testData.forEach(([text, date]) => assertEquals(toDate(text), date)));
Deno.test("toTitle()", () =>
testData.forEach(([text, date]) => {
if (!date) return;
assertEquals(toTitle(date), text);
}));
const diffData: [string[], string[]][] = [
[
[
"日刊記録sheet 2022-01-05",
"なにかのメモ",
" dummy indent",
"`2022-01-05 06:26:57 06:33:08`トイレ",
"`2022-01-05 06:15 0045 `あさごはん",
"`2022-01-05 06:50 0003 06:36:25 06:37:41`顔洗い",
"`2022-01-05 06:37:41 11:41:22`scriptの開発",
" またあさごはんを抜かしてしまった……",
"`2022-01-05 21:00 0420 `就寝",
"12:01:31 荷物を受け取った",
"`2022-01-05 07:15 0010 `出かける準備",
"`2022-01-05 07:25 0060 `登校",
"`2022-01-05 06:22:46 06:26:56`布団をしまう",
"`2022-01-05 08:25 0005 `荷物を机にしまう",
"`2022-01-05 13:00 0030 `ひるごはん",
"#2021-01-05 02:33:45",
"`2022-01-05 19:40 0018 `お風呂",
"`2022-01-05 19:25 0005 `手洗いうがい",
"`2022-01-05 18:15 0010 `帰る準備",
"`2022-01-05 18:25 0060 `下校",
"`2022-01-05 19:50 0010 `今日の日記を書く",
"`2022-01-05 20:00 0065 `よるごはん",
"`2022-01-05 21:05 0005 `歯磨き",
],
[
"日刊記録sheet 2022-01-05",
"yesterday: [日刊記録sheet 2022-01-04]",
"[** 00:00 - 03:00] 未明",
"[** 03:00 - 06:00] 明け方",
"[** 06:00 - 09:00] 朝",
"`2022-01-05 06:15 0045 `あさごはん",
"`2022-01-05 06:22:46 06:26:56`布団をしまう",
"`2022-01-05 06:26:57 06:33:08`トイレ",
"`2022-01-05 06:50 0003 06:36:25 06:37:41`顔洗い",
"`2022-01-05 06:37:41 11:41:22`scriptの開発",
" またあさごはんを抜かしてしまった……",
"`2022-01-05 07:15 0010 `出かける準備",
"`2022-01-05 07:25 0060 `登校",
"`2022-01-05 08:25 0005 `荷物を机にしまう",
"[** 09:00 - 12:00] 昼前",
"[** 12:00 - 15:00] 昼過ぎ",
"`2022-01-05 13:00 0030 `ひるごはん",
"[** 15:00 - 18:00] 夕方",
"[** 18:00 - 21:00] 夜のはじめ頃",
"`2022-01-05 18:15 0010 `帰る準備",
"`2022-01-05 18:25 0060 `下校",
"`2022-01-05 19:25 0005 `手洗いうがい",
"`2022-01-05 19:40 0018 `お風呂",
"`2022-01-05 19:50 0010 `今日の日記を書く",
"`2022-01-05 20:00 0065 `よるごはん",
"[** 21:00 - 00:00] 夜遅く",
"`2022-01-05 21:00 0420 `就寝",
"`2022-01-05 21:05 0005 `歯磨き",
"なにかのメモ",
" dummy indent",
"12:01:31 荷物を受け取った",
"#2021-01-05 02:33:45",
],
],
[
[
"日刊記録sheetではない 2022-01-05",
"`2022-01-05 06:37:41 11:41:22`scriptの開発",
" またあさごはんを抜かしてしまった……",
"なにかのメモ",
" dummy indent",
"`2022-01-05 06:26:57 06:33:08`トイレ",
"",
"日刊記録sheetではないページはformatの対象外",
],
[
"日刊記録sheetではない 2022-01-05",
"`2022-01-05 06:37:41 11:41:22`scriptの開発",
" またあさごはんを抜かしてしまった……",
"なにかのメモ",
" dummy indent",
"`2022-01-05 06:26:57 06:33:08`トイレ",
"",
"日刊記録sheetではないページはformatの対象外",
],
],
[
[
"日刊記録sheet 2020-12-07",
"なにかのメモ",
" dummy indent",
"",
"まだタスクも記録も書き込んでいないページ",
],
[
"日刊記録sheet 2020-12-07",
"yesterday: [日刊記録sheet 2020-12-06]",
"[** 00:00 - 03:00] 未明",
"[** 03:00 - 06:00] 明け方",
"[** 06:00 - 09:00] 朝",
"[** 09:00 - 12:00] 昼前",
"[** 12:00 - 15:00] 昼過ぎ",
"[** 15:00 - 18:00] 夕方",
"[** 18:00 - 21:00] 夜のはじめ頃",
"[** 21:00 - 00:00] 夜遅く",
"なにかのメモ",
" dummy indent",
"",
"まだタスクも記録も書き込んでいないページ",
],
],
[
[
"日刊記録sheet 2022-01-03",
"yesterday: [日刊記録sheet 2022-01-02]",
"`2022-01-03 06:37:41 11:41:22`scriptの開発",
" またあさごはんを抜かしてしまった……",
"なにかのメモ",
" dummy indent",
"`2022-01-03 06:26:57 06:33:08`トイレ",
"[** 00:00 - 03:00] 未明",
"[** 00:00 - 03:00] 未明",
"[** 00:00 - 03:00] 未明",
"[** 00:00 - 03:00] 未明",
"",
"重複している見出しは削る",
"yesterday: [日刊記録sheet 2022-01-02]",
],
[
"日刊記録sheet 2022-01-03",
"yesterday: [日刊記録sheet 2022-01-02]",
"[** 00:00 - 03:00] 未明",
"[** 03:00 - 06:00] 明け方",
"[** 06:00 - 09:00] 朝",
"`2022-01-03 06:26:57 06:33:08`トイレ",
"`2022-01-03 06:37:41 11:41:22`scriptの開発",
" またあさごはんを抜かしてしまった……",
"[** 09:00 - 12:00] 昼前",
"[** 12:00 - 15:00] 昼過ぎ",
"[** 15:00 - 18:00] 夕方",
"[** 18:00 - 21:00] 夜のはじめ頃",
"[** 21:00 - 00:00] 夜遅く",
"なにかのメモ",
" dummy indent",
"",
"重複している見出しは削る",
],
],
[
[
"日刊記録sheet 2022-01-06",
"[** 00:00 - 03:00] 未明",
"`2022-01-06 03:18:20 `布団を片付ける",
"[** 03:00 - 06:00] 明け方",
"`2022-01-06 `トイレ",
"[** 06:00 - 09:00] 朝",
],
[
"日刊記録sheet 2022-01-06",
"yesterday: [日刊記録sheet 2022-01-05]",
"[** 00:00 - 03:00] 未明",
"`2022-01-06 `トイレ",
"[** 03:00 - 06:00] 明け方",
"`2022-01-06 03:18:20 `布団を片付ける",
"[** 06:00 - 09:00] 朝",
"[** 09:00 - 12:00] 昼前",
"[** 12:00 - 15:00] 昼過ぎ",
"[** 15:00 - 18:00] 夕方",
"[** 18:00 - 21:00] 夜のはじめ頃",
"[** 21:00 - 00:00] 夜遅く",
],
],
];
Deno.test("format()", () =>
diffData.forEach(([before, after]) => assertEquals(format(before), after)));