-package be.nikiroo.fanfix.test;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import be.nikiroo.fanfix.data.Chapter;
-import be.nikiroo.fanfix.data.MetaData;
-import be.nikiroo.fanfix.data.Paragraph;
-import be.nikiroo.fanfix.data.Story;
-import be.nikiroo.fanfix.library.BasicLibrary;
-import be.nikiroo.fanfix.library.LocalLibrary;
-import be.nikiroo.fanfix.output.BasicOutput.OutputType;
-import be.nikiroo.utils.IOUtils;
-import be.nikiroo.utils.test.TestCase;
-import be.nikiroo.utils.test.TestLauncher;
-
-class LibraryTest extends TestLauncher {
- private BasicLibrary lib;
- private File tmp;
-
- public LibraryTest(String[] args) {
- super("Library", args);
-
- final String luid1 = "001"; // A
- final String luid2 = "002"; // B
- final String luid3 = "003"; // B then A, then B
- final String name1 = "My story 1";
- final String name2 = "My story 2";
- final String name3 = "My story 3";
- final String name3ex = "My story 3 [edited]";
- final String source1 = "Source A";
- final String source2 = "Source B";
- final String author1 = "Unknown author";
- final String author2 = "Another other otter author";
-
- final String errMess = "The resulting stories in the list are not what we expected";
-
- addSeries(new TestLauncher("Local", args) {
- {
- addTest(new TestCase("getList") {
- @Override
- public void test() throws Exception {
- List<MetaData> metas = lib.getList();
- assertEquals(errMess, Arrays.asList(),
- titlesAsList(metas));
- }
- });
-
- addTest(new TestCase("save") {
- @Override
- public void test() throws Exception {
- lib.save(story(luid1, name1, source1, author1), luid1,
- null);
-
- List<MetaData> metas = lib.getList();
- assertEquals(errMess, Arrays.asList(name1),
- titlesAsList(metas));
- }
- });
-
- addTest(new TestCase("save more") {
- @Override
- public void test() throws Exception {
- List<MetaData> metas = null;
-
- lib.save(story(luid2, name2, source2, author1), luid2,
- null);
-
- metas = lib.getList();
- assertEquals(errMess, Arrays.asList(name1, name2),
- titlesAsList(metas));
-
- lib.save(story(luid3, name3, source2, author1), luid3,
- null);
-
- metas = lib.getList();
- assertEquals(errMess,
- Arrays.asList(name1, name2, name3),
- titlesAsList(metas));
- }
- });
-
- addTest(new TestCase("save override luid (change author)") {
- @Override
- public void test() throws Exception {
- // same luid as a previous one
- lib.save(story(luid3, name3ex, source2, author2),
- luid3, null);
-
- List<MetaData> metas = lib.getList();
- assertEquals(errMess,
- Arrays.asList(name1, name2, name3ex),
- titlesAsList(metas));
- }
- });
-
- addTest(new TestCase("getList with results") {
- @Override
- public void test() throws Exception {
- List<MetaData> metas = lib.getList();
- assertEquals(3, metas.size());
- }
- });
-
- addTest(new TestCase("getList by source") {
- @Override
- public void test() throws Exception {
- List<MetaData> metas = null;
-
- metas = lib.getListBySource(source1);
- assertEquals(1, metas.size());
-
- metas = lib.getListBySource(source2);
- assertEquals(2, metas.size());
-
- metas = lib.getListBySource(null);
- assertEquals(3, metas.size());
- }
- });
-
- addTest(new TestCase("getList by author") {
- @Override
- public void test() throws Exception {
- List<MetaData> metas = null;
-
- metas = lib.getListByAuthor(author1);
- assertEquals(2, metas.size());
-
- metas = lib.getListByAuthor(author2);
- assertEquals(1, metas.size());
-
- metas = lib.getListByAuthor(null);
- assertEquals(3, metas.size());
- }
- });
-
- addTest(new TestCase("changeType") {
- @Override
- public void test() throws Exception {
- List<MetaData> metas = null;
-
- lib.changeSource(luid3, source1, null);
-
- metas = lib.getListBySource(source1);
- assertEquals(2, metas.size());
-
- metas = lib.getListBySource(source2);
- assertEquals(1, metas.size());
-
- metas = lib.getListBySource(null);
- assertEquals(3, metas.size());
- }
- });
-
- addTest(new TestCase("save override luid (change source)") {
- @Override
- public void test() throws Exception {
- List<MetaData> metas = null;
-
- // same luid as a previous one
- lib.save(story(luid3, "My story 3", source2, author2),
- luid3, null);
-
- metas = lib.getListBySource(source1);
- assertEquals(1, metas.size());
-
- metas = lib.getListBySource(source2);
- assertEquals(2, metas.size());
-
- metas = lib.getListBySource(null);
- assertEquals(3, metas.size());
- }
- });
- }
- });
- }
-
- @Override
- protected void start() throws Exception {
- tmp = File.createTempFile(".test-fanfix", ".library");
- tmp.delete();
- tmp.mkdir();
-
- lib = new LocalLibrary(tmp, OutputType.INFO_TEXT, OutputType.CBZ);
- }
-
- @Override
- protected void stop() throws Exception {
- IOUtils.deltree(tmp);
- }
-
- /**
- * Return the (sorted) list of titles present in this list of
- * {@link MetaData}s.
- *
- * @param metas
- * the meta
- *
- * @return the sorted list
- */
- private List<String> titlesAsList(List<MetaData> metas) {
- List<String> list = new ArrayList<String>();
- for (MetaData meta : metas) {
- list.add(meta.getTitle());
- }
-
- Collections.sort(list);
- return list;
- }
-
- private Story story(String luid, String title, String source, String author) {
- Story story = new Story();
-
- MetaData meta = new MetaData();
- meta.setLuid(luid);
- meta.setTitle(title);
- meta.setSource(source);
- meta.setAuthor(author);
- story.setMeta(meta);
-
- Chapter resume = chapter(0, "Resume");
- meta.setResume(resume);
-
- List<Chapter> chapters = new ArrayList<Chapter>();
- chapters.add(chapter(1, "Chap 1"));
- chapters.add(chapter(2, "Chap 2"));
- story.setChapters(chapters);
-
- long words = 0;
- for (Chapter chap : story.getChapters()) {
- words += chap.getWords();
- }
- meta.setWords(words);
-
- return story;
- }
-
- private Chapter chapter(int number, String name) {
- Chapter chapter = new Chapter(number, name);
-
- List<Paragraph> paragraphs = new ArrayList<Paragraph>();
- paragraphs.add(new Paragraph(Paragraph.ParagraphType.NORMAL,
- "some words in this paragraph please thank you", 8));
-
- chapter.setParagraphs(paragraphs);
-
- long words = 0;
- for (Paragraph para : chapter.getParagraphs()) {
- words += para.getWords();
- }
- chapter.setWords(words);
-
- return chapter;
- }
-}