222d9d5285e562d735ae99a9806b0cf848ce0d86
[fanfix.git] / src / be / nikiroo / fanfix / test / LibraryTest.java
1 package be.nikiroo.fanfix.test;
2
3 import java.io.File;
4 import java.util.ArrayList;
5 import java.util.List;
6
7 import be.nikiroo.fanfix.Library;
8 import be.nikiroo.fanfix.data.Chapter;
9 import be.nikiroo.fanfix.data.MetaData;
10 import be.nikiroo.fanfix.data.Paragraph;
11 import be.nikiroo.fanfix.data.Story;
12 import be.nikiroo.fanfix.output.BasicOutput.OutputType;
13 import be.nikiroo.utils.IOUtils;
14 import be.nikiroo.utils.test.TestCase;
15 import be.nikiroo.utils.test.TestLauncher;
16
17 public class LibraryTest extends TestLauncher {
18 private Library lib;
19 private File tmp;
20
21 public LibraryTest(String[] args) {
22 super("Library", args);
23
24 final String luid1 = "001"; // A
25 final String luid2 = "002"; // B
26 final String luid3 = "003"; // B then A, then B
27 final String source1 = "Source A";
28 final String source2 = "Source B";
29 final String author1 = "Unknown author";
30 final String author2 = "Another other otter author";
31
32 addSeries(new TestLauncher("Local", args) {
33 {
34 addTest(new TestCase("getList") {
35 @Override
36 public void test() throws Exception {
37 // TODO: getList
38 List<MetaData> metas = lib.getListBySource(null);
39 assertEquals(0, metas.size());
40 }
41 });
42
43 addTest(new TestCase("save") {
44 @Override
45 public void test() throws Exception {
46 lib.save(story(luid1, "My story 1", source1, author1),
47 luid1, null);
48
49 // TODO: getList
50 List<MetaData> metas = lib.getListBySource(null);
51 assertEquals(1, metas.size());
52 }
53 });
54
55 addTest(new TestCase("save more") {
56 @Override
57 public void test() throws Exception {
58 List<MetaData> metas = null;
59
60 lib.save(story(luid2, "My story 2", source2, author1),
61 luid2, null);
62
63 // TODO: getList
64 metas = lib.getListBySource(null);
65 assertEquals(2, metas.size());
66
67 lib.save(story(luid3, "My story 3", source2, author1),
68 luid3, null);
69
70 // TODO: getList
71 metas = lib.getListBySource(null);
72 assertEquals(3, metas.size());
73 }
74 });
75
76 addTest(new TestCase("save override luid (change author)") {
77 @Override
78 public void test() throws Exception {
79 // same luid as a previous one
80 lib.save(story(luid3, "My story 3", source2, author2),
81 luid3, null);
82
83 // TODO: getList
84 List<MetaData> metas = lib.getListBySource(null);
85 assertEquals(3, metas.size());
86 }
87 });
88
89 addTest(new TestCase("getList with results") {
90 @Override
91 public void test() throws Exception {
92 // TODO: getList
93 List<MetaData> metas = lib.getListBySource(null);
94 assertEquals(3, metas.size());
95 }
96 });
97
98 addTest(new TestCase("getList by source") {
99 @Override
100 public void test() throws Exception {
101 List<MetaData> metas = null;
102
103 metas = lib.getListBySource(source1);
104 assertEquals(1, metas.size());
105
106 metas = lib.getListBySource(source2);
107 assertEquals(2, metas.size());
108
109 metas = lib.getListBySource(null);
110 assertEquals(3, metas.size());
111 }
112 });
113
114 addTest(new TestCase("getList by author") {
115 @Override
116 public void test() throws Exception {
117 List<MetaData> metas = null;
118
119 metas = lib.getListByAuthor(author1);
120 assertEquals(2, metas.size());
121
122 metas = lib.getListByAuthor(author2);
123 assertEquals(1, metas.size());
124
125 metas = lib.getListByAuthor(null);
126 assertEquals(3, metas.size());
127 }
128 });
129
130 addTest(new TestCase("changeType") {
131 @Override
132 public void test() throws Exception {
133 List<MetaData> metas = null;
134
135 lib.changeType(luid3, source1);
136
137 metas = lib.getListBySource(source1);
138 assertEquals(2, metas.size());
139
140 metas = lib.getListBySource(source2);
141 assertEquals(1, metas.size());
142
143 metas = lib.getListBySource(null);
144 assertEquals(3, metas.size());
145 }
146 });
147
148 addTest(new TestCase("save override luid (change source)") {
149 @Override
150 public void test() throws Exception {
151 List<MetaData> metas = null;
152
153 // same luid as a previous one
154 lib.save(story(luid3, "My story 3", source2, author2),
155 luid3, null);
156
157 metas = lib.getListBySource(source1);
158 assertEquals(1, metas.size());
159
160 metas = lib.getListBySource(source2);
161 assertEquals(2, metas.size());
162
163 metas = lib.getListBySource(null);
164 assertEquals(3, metas.size());
165 }
166 });
167 }
168 });
169 }
170
171 @Override
172 protected void start() throws Exception {
173 tmp = File.createTempFile(".test-fanfix", ".library");
174 tmp.delete();
175 tmp.mkdir();
176
177 lib = new Library(tmp, OutputType.INFO_TEXT, OutputType.CBZ);
178 }
179
180 @Override
181 protected void stop() throws Exception {
182 IOUtils.deltree(tmp);
183 }
184
185 private Story story(String luid, String title, String source, String author) {
186 Story story = new Story();
187
188 MetaData meta = new MetaData();
189 meta.setLuid(luid);
190 meta.setTitle(title);
191 meta.setSource(source);
192 meta.setAuthor(author);
193 story.setMeta(meta);
194
195 Chapter resume = chapter(0, "Resume");
196 meta.setResume(resume);
197
198 List<Chapter> chapters = new ArrayList<Chapter>();
199 chapters.add(chapter(1, "Chap 1"));
200 chapters.add(chapter(2, "Chap 2"));
201 story.setChapters(chapters);
202
203 long words = 0;
204 for (Chapter chap : story.getChapters()) {
205 words += chap.getWords();
206 }
207 meta.setWords(words);
208
209 return story;
210 }
211
212 private Chapter chapter(int number, String name) {
213 Chapter chapter = new Chapter(number, name);
214
215 List<Paragraph> paragraphs = new ArrayList<Paragraph>();
216 paragraphs.add(new Paragraph(Paragraph.ParagraphType.NORMAL,
217 "some words in this paragraph please thank you", 8));
218
219 chapter.setParagraphs(paragraphs);
220
221 long words = 0;
222 for (Paragraph para : chapter.getParagraphs()) {
223 words += para.getWords();
224 }
225 chapter.setWords(words);
226
227 return chapter;
228 }
229 }