X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Ftest%2FBasicSupportTest.java;h=af33f9d0695494bb3b954b3aa72605f2998a115a;hb=211f7ddb50f68aa8a999023ef6d63d5756bdace6;hp=ed585d983fb2512f3494f3871c0ee4740f4c5132;hpb=68e370a441d8e6b10bfaa904ecacb29e7d6160d8;p=nikiroo-utils.git diff --git a/src/be/nikiroo/fanfix/test/BasicSupportTest.java b/src/be/nikiroo/fanfix/test/BasicSupportTest.java index ed585d9..af33f9d 100644 --- a/src/be/nikiroo/fanfix/test/BasicSupportTest.java +++ b/src/be/nikiroo/fanfix/test/BasicSupportTest.java @@ -1,5 +1,6 @@ package be.nikiroo.fanfix.test; +import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.URL; @@ -7,14 +8,29 @@ import java.util.ArrayList; import java.util.List; import java.util.Map.Entry; +import be.nikiroo.fanfix.Instance; +import be.nikiroo.fanfix.bundles.StringId; import be.nikiroo.fanfix.data.MetaData; import be.nikiroo.fanfix.data.Paragraph; import be.nikiroo.fanfix.data.Paragraph.ParagraphType; +import be.nikiroo.fanfix.data.Story; import be.nikiroo.fanfix.supported.BasicSupport; +import be.nikiroo.fanfix.supported.BasicSupport.SupportType; +import be.nikiroo.utils.IOUtils; +import be.nikiroo.utils.Progress; import be.nikiroo.utils.test.TestCase; import be.nikiroo.utils.test.TestLauncher; public class BasicSupportTest extends TestLauncher { + // quote chars + private char openQuote = Instance.getTrans().getCharacter( + StringId.OPEN_SINGLE_QUOTE); + private char closeQuote = Instance.getTrans().getCharacter( + StringId.CLOSE_SINGLE_QUOTE); + private char openDoubleQuote = Instance.getTrans().getCharacter( + StringId.OPEN_DOUBLE_QUOTE); + private char closeDoubleQuote = Instance.getTrans().getCharacter( + StringId.CLOSE_DOUBLE_QUOTE); public BasicSupportTest(String[] args) { super("BasicSupport", args); @@ -35,7 +51,7 @@ public class BasicSupportTest extends TestLauncher { } @Override - protected List requotify(Paragraph para) { + public List requotify(Paragraph para) { List paras = new ArrayList( 1); paras.add(para); @@ -45,13 +61,13 @@ public class BasicSupportTest extends TestLauncher { List paras = null; - paras = support.makeParagraphs(null, ""); + paras = support.makeParagraphs(null, "", null); assertEquals( "An empty content should not generate paragraphs", 0, paras.size()); paras = support.makeParagraphs(null, - "Line 1

Line 2

Line 3

"); + "Line 1

Line 2

Line 3

", null); assertEquals(5, paras.size()); assertEquals("Line 1", paras.get(0).getContent()); assertEquals(ParagraphType.BLANK, paras.get(1) @@ -62,7 +78,7 @@ public class BasicSupportTest extends TestLauncher { assertEquals("Line 3", paras.get(4).getContent()); paras = support.makeParagraphs(null, - "

Line1

Line2

Line3

"); + "

Line1

Line2

Line3

", null); assertEquals(6, paras.size()); } }); @@ -80,39 +96,300 @@ public class BasicSupportTest extends TestLauncher { List paras = null; paras = support - .makeParagraphs(null, - "

Line1

Line2

Line3

"); + .makeParagraphs( + null, + "

Line1

Line2

Line3

", + null); assertEquals(5, paras.size()); paras = support - .makeParagraphs(null, - "

Line1

Line2

Line3

* * *"); + .makeParagraphs( + null, + "

Line1

Line2

Line3

* * *", + null); assertEquals(5, paras.size()); - paras = support.makeParagraphs(null, "1

* * *

2"); + paras = support.makeParagraphs(null, "1

* * *

2", + null); assertEquals(3, paras.size()); assertEquals(ParagraphType.BREAK, paras.get(1) .getType()); paras = support.makeParagraphs(null, - "1


* * *

2"); + "1


* * *

2", null); assertEquals(3, paras.size()); assertEquals(ParagraphType.BREAK, paras.get(1) .getType()); paras = support.makeParagraphs(null, - "1

* * *


2"); + "1

* * *


2", null); assertEquals(3, paras.size()); assertEquals(ParagraphType.BREAK, paras.get(1) .getType()); paras = support.makeParagraphs(null, - "1



* * *


2"); + "1



* * *


2", null); assertEquals(3, paras.size()); assertEquals(ParagraphType.BREAK, paras.get(1) .getType()); } }); + + addTest(new TestCase("BasicSupport.processPara() quotes") { + @Override + public void test() throws Exception { + BasicSupportEmpty support = new BasicSupportEmpty() { + @Override + protected boolean isHtml() { + return true; + } + }; + + Paragraph para; + + // sanity check + para = support.processPara(""); + assertEquals(ParagraphType.BLANK, para.getType()); + // + + para = support.processPara("\"Yes, my Lord!\""); + assertEquals(ParagraphType.QUOTE, para.getType()); + assertEquals(openDoubleQuote + "Yes, my Lord!" + + closeDoubleQuote, para.getContent()); + + para = support.processPara("«Yes, my Lord!»"); + assertEquals(ParagraphType.QUOTE, para.getType()); + assertEquals(openDoubleQuote + "Yes, my Lord!" + + closeDoubleQuote, para.getContent()); + + para = support.processPara("'Yes, my Lord!'"); + assertEquals(ParagraphType.QUOTE, para.getType()); + assertEquals(openQuote + "Yes, my Lord!" + closeQuote, + para.getContent()); + + para = support.processPara("‹Yes, my Lord!›"); + assertEquals(ParagraphType.QUOTE, para.getType()); + assertEquals(openQuote + "Yes, my Lord!" + closeQuote, + para.getContent()); + } + }); + + addTest(new TestCase( + "BasicSupport.processPara() double-simple quotes") { + @Override + public void setUp() throws Exception { + super.setUp(); + + } + + @Override + public void tearDown() throws Exception { + + super.tearDown(); + } + + @Override + public void test() throws Exception { + BasicSupportEmpty support = new BasicSupportEmpty() { + @Override + protected boolean isHtml() { + return true; + } + }; + + Paragraph para; + + para = support.processPara("''Yes, my Lord!''"); + assertEquals(ParagraphType.QUOTE, para.getType()); + assertEquals(openDoubleQuote + "Yes, my Lord!" + + closeDoubleQuote, para.getContent()); + + para = support.processPara("‹‹Yes, my Lord!››"); + assertEquals(ParagraphType.QUOTE, para.getType()); + assertEquals(openDoubleQuote + "Yes, my Lord!" + + closeDoubleQuote, para.getContent()); + } + }); + + addTest(new TestCase("BasicSupport.processPara() apostrophe") { + @Override + public void test() throws Exception { + BasicSupportEmpty support = new BasicSupportEmpty() { + @Override + protected boolean isHtml() { + return true; + } + }; + + Paragraph para; + + String text = "Nous étions en été, mais cela aurait être l'hiver quand nous n'étions encore qu'à Aubeuge"; + para = support.processPara(text); + assertEquals(ParagraphType.NORMAL, para.getType()); + assertEquals(text, para.getContent()); + } + }); + + addTest(new TestCase("BasicSupport.processPara() words count") { + @Override + public void test() throws Exception { + BasicSupportEmpty support = new BasicSupportEmpty() { + @Override + protected boolean isHtml() { + return true; + } + }; + + Paragraph para; + + para = support.processPara("«Yes, my Lord!»"); + assertEquals(3, para.getWords()); + + para = support.processPara("One, twee, trois."); + assertEquals(3, para.getWords()); + } + }); + + addTest(new TestCase("BasicSupport.requotify() words count") { + @Override + public void test() throws Exception { + BasicSupportEmpty support = new BasicSupportEmpty(); + + char openDoubleQuote = Instance.getTrans() + .getCharacter(StringId.OPEN_DOUBLE_QUOTE); + char closeDoubleQuote = Instance.getTrans() + .getCharacter(StringId.CLOSE_DOUBLE_QUOTE); + + String content = null; + Paragraph para = null; + List paras = null; + long words = 0; + + content = "One, twee, trois."; + para = new Paragraph(ParagraphType.NORMAL, content, + content.split(" ").length); + paras = support.requotify(para); + words = 0; + for (Paragraph p : paras) { + words += p.getWords(); + } + assertEquals("Bad words count in a single paragraph", + para.getWords(), words); + + content = "Such WoW! So Web2.0! With Colours!"; + para = new Paragraph(ParagraphType.NORMAL, content, + content.split(" ").length); + paras = support.requotify(para); + words = 0; + for (Paragraph p : paras) { + words += p.getWords(); + } + assertEquals("Bad words count in a single paragraph", + para.getWords(), words); + + content = openDoubleQuote + "Such a good idea!" + + closeDoubleQuote + + ", she said. This ought to be a new para."; + para = new Paragraph(ParagraphType.QUOTE, content, + content.split(" ").length); + paras = support.requotify(para); + words = 0; + for (Paragraph p : paras) { + words += p.getWords(); + } + assertEquals( + "Bad words count in a requotified paragraph", + para.getWords(), words); + } + }); + } + }); + + addSeries(new TestLauncher("Text", args) { + { + addTest(new TestCase("Chapter detection simple") { + private File tmp; + + @Override + public void setUp() throws Exception { + tmp = File.createTempFile("fanfix-text-file_", ".test"); + IOUtils.writeSmallFile(tmp.getParentFile(), + tmp.getName(), "TITLE" + + "\n"// + + "By nona" + + "\n" // + + "\n" // + + "Chapter 0: Resumé" + "\n" + "\n" + + "'sume." + "\n" + "\n" + + "Chapter 1: chap1" + "\n" + "\n" + + "Fanfan." + "\n" + "\n" + + "Chapter 2: Chap2" + "\n" + "\n" // + + "Tulipe." + "\n"); + } + + @Override + public void tearDown() throws Exception { + tmp.delete(); + } + + @Override + public void test() throws Exception { + BasicSupport support = BasicSupport + .getSupport(SupportType.TEXT); + + Story story = support + .process(tmp.toURI().toURL(), null); + + assertEquals(2, story.getChapters().size()); + assertEquals(1, story.getChapters().get(1) + .getParagraphs().size()); + assertEquals("Tulipe.", story.getChapters().get(1) + .getParagraphs().get(0).getContent()); + } + }); + + addTest(new TestCase("Chapter detection with String 'Chapter'") { + private File tmp; + + @Override + public void setUp() throws Exception { + tmp = File.createTempFile("fanfix-text-file_", ".test"); + IOUtils.writeSmallFile(tmp.getParentFile(), + tmp.getName(), "TITLE" + + "\n"// + + "By nona" + + "\n" // + + "\n" // + + "Chapter 0: Resumé" + "\n" + "\n" + + "'sume." + "\n" + "\n" + + "Chapter 1: chap1" + "\n" + "\n" + + "Chapter fout-la-merde" + "\n" + + "\n"// + + "Fanfan." + "\n" + "\n" + + "Chapter 2: Chap2" + "\n" + "\n" // + + "Tulipe." + "\n"); + } + + @Override + public void tearDown() throws Exception { + tmp.delete(); + } + + @Override + public void test() throws Exception { + BasicSupport support = BasicSupport + .getSupport(SupportType.TEXT); + + Story story = support + .process(tmp.toURI().toURL(), null); + + assertEquals(2, story.getChapters().size()); + assertEquals(1, story.getChapters().get(1) + .getParagraphs().size()); + assertEquals("Tulipe.", story.getChapters().get(1) + .getParagraphs().get(0).getContent()); + } + }); } }); } @@ -146,21 +423,21 @@ public class BasicSupportTest extends TestLauncher { @Override protected List> getChapters(URL source, - InputStream in) throws IOException { + InputStream in, Progress pg) throws IOException { return null; } @Override protected String getChapterContent(URL source, InputStream in, - int number) throws IOException { + int number, Progress pg) throws IOException { return null; } @Override // and make it public! - public List makeParagraphs(URL source, String content) - throws IOException { - return super.makeParagraphs(source, content); + public List makeParagraphs(URL source, String content, + Progress pg) throws IOException { + return super.makeParagraphs(source, content, pg); } @Override @@ -168,5 +445,17 @@ public class BasicSupportTest extends TestLauncher { public void fixBlanksBreaks(List paras) { super.fixBlanksBreaks(paras); } + + @Override + // and make it public! + public Paragraph processPara(String line) { + return super.processPara(line); + } + + @Override + // and make it public! + public List requotify(Paragraph para) { + return super.requotify(para); + } } }