//package winterwell.markdown.pagemodel;
//
//import java.util.Arrays;
//import java.util.List;
//
//import junit.framework.TestCase;
//// import winterwell.utils.MarkdownFormatter;
//
///**
// * Test methods in the StringMethods utility class.
// */
//public class MarkdownFormatterTest extends TestCase
//{
// /**
// * The local line-end string. \n on unix, \r\n on windows.
// * I really want to run through all of these tests with both styles.
// * We'll come back to that sort of a trick.
// */
// // public String LINEEND = System.getProperty("line.separator");
// public static final String LINEEND = "\r\n";
//
// /**
// * Test default word wrapping of a long line of normal text.
// */
// public void testFormatStringInt ()
// {
// final String LONG_LINE =
// "Now is the time for all good " +
// "chickens to come to the aid of " +
// "their coopertino lattes, and " +
// "begin the process of singing.";
// final String EXPECTED =
// "Now is the time for all good" + LINEEND +
// "chickens to come to the aid of" + LINEEND + // This line is 30 characters
// "their coopertino lattes, and" + LINEEND +
// "begin the process of singing.";
// assertEquals (EXPECTED, MarkdownFormatter.format (LONG_LINE, 30, LINEEND));
// }
//
// /**
// * If the initial part of the line contains some spaces, we use that as
// * the "indentation" for every other line.
// * @throws Exception
// */
// public void testIndentOfSpaces () throws Exception
// {
// final String LONG_LINE =
// " Now is the time for all good " +
// "chickens to come to the aid of " +
// "their coopertino lattes, and " +
// "begin the process of singing.";
// final String EXPECTED =
// " Now is the time for all good" + LINEEND +
// " chickens to come to the aid of" + LINEEND +
// " their coopertino lattes, and" + LINEEND +
// " begin the process of singing.";
// assertEquals (EXPECTED, MarkdownFormatter.format (LONG_LINE, 34, LINEEND));
// }
//
// /**
// * Can we maintain the format of text that is already formatted?
// * @throws Exception
// */
// public void testAlreadyFormatted () throws Exception
// {
// final String LONG_LINE =
// " Now is the time for all good" + LINEEND +
// " chickens to come to the aid of" + LINEEND +
// " their coopertino lattes, and" + LINEEND +
// " begin the process of singing.";
// assertEquals (LONG_LINE, MarkdownFormatter.format (LONG_LINE, 34, LINEEND));
// }
//
// /**
// * Formatting a single line is all fine and dandy, but what about
// * formatting multiple paragraphs, that is, blank lines.
// * @throws Exception
// */
// public void testMultipleParagraphs () throws Exception
// {
// final String LONG_LINE =
// " Now is the time for all good " +
// "chickens to come to their aid." + LINEEND + LINEEND +
// " And drink coopertino lattes, and " +
// "begin the process of singing.";
// final String EXPECTED =
// " Now is the time for all good" + LINEEND +
// " chickens to come to their aid." + LINEEND + LINEEND +
// " And drink coopertino lattes," + LINEEND +
// " and begin the process of" + LINEEND + " singing.";
// assertEquals (EXPECTED, MarkdownFormatter.format (LONG_LINE, 34, LINEEND));
// }
//
// /**
// * What if the section we are formatting, begins with line feeds?
// * Do we keep 'em? Might as well. :-)
// * @throws Exception
// */
// public void testInitialLineFeeds () throws Exception
// {
// final String LONG_LINE = LINEEND + LINEEND + LINEEND +
// " Now is the time for all good" + LINEEND +
// " chickens to come to the aid of" + LINEEND +
// " their coopertino lattes, and" + LINEEND +
// " begin the process of singing.";
// assertEquals (LONG_LINE, MarkdownFormatter.format (LONG_LINE, 34, LINEEND));
// }
//
// /**
// * We need to be able to format bulleted lists appropriately.
// * @throws Exception
// */
// public void testSingleBulletedList () throws Exception
// {
// final String LONG_LINE =
// " * Now is the time for all good " +
// "chickens to come to the aid of " + LINEEND +
// "their coopertino lattes, and " +
// "begin the process of singing.";
// final String EXPECTED =
// " * Now is the time for all good" + LINEEND +
// " chickens to come to the aid of" + LINEEND +
// " their coopertino lattes, and" + LINEEND +
// " begin the process of singing.";
// assertEquals (EXPECTED, MarkdownFormatter.format (LONG_LINE, 34, LINEEND));
// }
//
// /**
// * What about dealing with multiple bulleted lists.
// * @throws Exception
// */
// public void testMultipleBulletedList () throws Exception
// {
// final String LONG_LINE =
// "Now is the time for all good " +
// "chickens to:" + LINEEND + LINEEND +
// " * Cluck" + LINEEND +
// " * Sing" + LINEEND +
// " * Drink coopertino lattes.";
// final String EXPECTED =
// "Now is the time for all good" + LINEEND +
// "chickens to:" + LINEEND + LINEEND +
// " * Cluck" + LINEEND +
// " * Sing" + LINEEND +
// " * Drink coopertino lattes.";
// assertEquals (EXPECTED, MarkdownFormatter.format (LONG_LINE, 34, LINEEND));
// }
//
// /**
// * What about dealing with multiple bulleted lists.
// * @throws Exception
// */
// public void testMultipleDashedBulletedList () throws Exception
// {
// final String LONG_LINE =
// "Now is the time for all good " +
// "chickens to:" + LINEEND + LINEEND +
// " - Cluck" + LINEEND +
// " - Sing" + LINEEND +
// " - Drink coopertino lattes.";
// final String EXPECTED =
// "Now is the time for all good" + LINEEND +
// "chickens to:" + LINEEND + LINEEND +
// " - Cluck" + LINEEND +
// " - Sing" + LINEEND +
// " - Drink coopertino lattes.";
// assertEquals (EXPECTED, MarkdownFormatter.format (LONG_LINE, 34, LINEEND));
// }
//
// /**
// * Tests whether we can have nested bulleted lists.
// * @throws Exception
// */
// public void testSubindentedBulletedLists () throws Exception
// {
// final String LONG_LINE =
// "Now is the time for all good " +
// "chickens to:" + LINEEND + LINEEND +
// " * Cluck, cluck, cluck till their little feets hurt:" + LINEEND +
// " * Do it again and again and again and again." + LINEEND +
// " * And maybe again and again if their mommy's say so." + LINEEND +
// " * We can indent really, really, deep with three levels of subitems." + LINEEND +
// " * But we aren't sure if this is getting ridiculous or just plain expected." + LINEEND +
// " * Sing, sing, sing till their little voices break:" + LINEEND +
// " * Do it again and again and again and again." + LINEEND +
// " * And maybe again and again if their mommy's say so." + LINEEND +
// " * Drink coopertino lattes.";
// final String EXPECTED =
// "Now is the time for all good" + LINEEND +
// "chickens to:" + LINEEND + LINEEND +
// " * Cluck, cluck, cluck till their" + LINEEND +
// " little feets hurt:" + LINEEND +
// " * Do it again and again and" + LINEEND +
// " again and again." + LINEEND +
// " * And maybe again and again if" + LINEEND +
// " their mommy's say so." + LINEEND +
// " * We can indent really," + LINEEND +
// " really, deep with three" + LINEEND +
// " levels of subitems." + LINEEND +
// " * But we aren't sure if this" + LINEEND +
// " is getting ridiculous or " + LINEEND +
// " just plain expected." + LINEEND +
// " * Sing, sing, sing till their" + LINEEND +
// " little voices break:" + LINEEND +
// " * Do it again and again and" + LINEEND +
// " again and again." + LINEEND +
// " * And maybe again and again if" + LINEEND +
// " their mommy's say so." + LINEEND +
// " * Drink coopertino lattes.";
// assertEquals (EXPECTED, MarkdownFormatter.format (LONG_LINE, 34, LINEEND));
// }
//
// /**
// * Tests whether we can have nested bulleted lists.
// * @throws Exception
// */
// public void testSubindentedBulletedLists2 () throws Exception
// {
// final String LONG_LINE =
// "Now is the time for all good " +
// "chickens to:" + LINEEND + LINEEND +
// " * Cluck, cluck, cluck till their little feets hurt:" + LINEEND + LINEEND +
// " * Do it again and again and again and again." + LINEEND + LINEEND +
// " * And maybe again and again if their mommy's say so." + LINEEND + LINEEND +
// " * We can indent really, really, deep with three levels of subitems." + LINEEND + LINEEND +
// " * But we aren't sure if this is getting ridiculous or just plain expected." + LINEEND + LINEEND +
// " * Sing, sing, sing till their little voices break:" + LINEEND + LINEEND +
// " * Do it again and again and again and again." + LINEEND + LINEEND +
// " * And maybe again and again if their mommy's say so." + LINEEND + LINEEND +
// " * Drink coopertino lattes.";
// final String EXPECTED =
// "Now is the time for all good" + LINEEND +
// "chickens to:" + LINEEND + LINEEND +
// " * Cluck, cluck, cluck till their" + LINEEND +
// " little feets hurt:" + LINEEND + LINEEND +
// " * Do it again and again and" + LINEEND +
// " again and again." + LINEEND + LINEEND +
// " * And maybe again and again if" + LINEEND +
// " their mommy's say so." + LINEEND + LINEEND +
// " * We can indent really," + LINEEND +
// " really, deep with three" + LINEEND +
// " levels of subitems." + LINEEND + LINEEND +
// " * But we aren't sure if this" + LINEEND +
// " is getting ridiculous or" + LINEEND +
// " just plain expected." + LINEEND + LINEEND +
// " * Sing, sing, sing till their" + LINEEND +
// " little voices break:" + LINEEND + LINEEND +
// " * Do it again and again and" + LINEEND +
// " again and again." + LINEEND + LINEEND +
// " * And maybe again and again if" + LINEEND +
// " their mommy's say so." + LINEEND + LINEEND +
// " * Drink coopertino lattes.";
// assertEquals (EXPECTED, MarkdownFormatter.format (LONG_LINE, 34, LINEEND));
// }
//
// /**
// * What about dealing with a numeric list?
// * @throws Exception
// */
// public void testSingleNumericList () throws Exception
// {
// final String LONG_LINE =
// " 2. Now is the time for all good " +
// "chickens to come to the aid of " +
// "their coopertino lattes, and " +
// "begin the process of singing.";
// final String EXPECTED =
// " 2. Now is the time for all good" + LINEEND +
// " chickens to come to the aid of" + LINEEND +
// " their coopertino lattes, and" + LINEEND +
// " begin the process of singing.";
// assertEquals (EXPECTED, MarkdownFormatter.format (LONG_LINE, 34, LINEEND));
// }
//
// /**
// * What about dealing with multiple bulleted lists.
// * @throws Exception
// */
// public void testMultipleNumericList () throws Exception
// {
// final String LONG_LINE =
// "Now is the time for all good " +
// "chickens to:" + LINEEND + LINEEND +
// " 1. Cluck" + LINEEND +
// " 2. Sing" + LINEEND +
// " 3. Drink coopertino lattes.";
// final String EXPECTED =
// "Now is the time for all good" + LINEEND +
// "chickens to:" + LINEEND + LINEEND +
// " 1. Cluck" + LINEEND +
// " 2. Sing" + LINEEND +
// " 3. Drink coopertino lattes.";
// assertEquals (EXPECTED, MarkdownFormatter.format (LONG_LINE, 34, LINEEND));
// }
//
// /**
// * What about dealing with sections that should not be word wrapped, like
// * the text between brackets (since they are hyperlinks).
// * @throws Exception
// */
// public void testNoWordWrapBracket() throws Exception
// {
// final String LONG_LINE =
// "Now is the time for all good " +
// "chickens to come to [the spurious and costly][3] " +
// "aid of their coopertino cups, " +
// "and begin sing.";
// final String EXPECTED =
// "Now is the time for all good" + LINEEND +
// "chickens to come to [the spurious and costly][3]" + LINEEND +
// "aid of their coopertino cups, and" + LINEEND +
// "begin sing.";
// assertEquals (EXPECTED, MarkdownFormatter.format (LONG_LINE, 34, LINEEND));
// }
// /**
// * What about dealing with bracketed sections with no extra white space
// * @throws Exception
// */
// public void testNoWordWrapBracket2() throws Exception
// {
// final String LONG_LINE =
// "Now is the time for all good " +
// "chickens to come to[the spurious and costly][3] " +
// "aid of their coopertino cups, " +
// "and begin sing.";
// final String EXPECTED =
// "Now is the time for all good" + LINEEND +
// "chickens to come to[the spurious and costly][3]" + LINEEND +
// "aid of their coopertino cups, and" + LINEEND +
// "begin sing.";
// assertEquals (EXPECTED, MarkdownFormatter.format (LONG_LINE, 34, LINEEND));
// }
//
// /**
// * What about dealing with bold sections that should not be word wrapped.
// * @throws Exception
// */
// public void testNoWordWrapDoubleAsterix() throws Exception
// {
// final String LONG_LINE =
// "Now is the time for all good " +
// "chickens to come to **the spurious and costly** " +
// "aid of their coopertino cups, " +
// "and begin sing.";
// final String EXPECTED =
// "Now is the time for all good" + LINEEND +
// "chickens to come to **the spurious and costly**" + LINEEND +
// "aid of their coopertino cups, and" + LINEEND +
// "begin sing.";
// assertEquals (EXPECTED, MarkdownFormatter.format (LONG_LINE, 34, LINEEND));
// }
//
// /**
// * What about dealing with italic sections that should not be word wrapped
// * @throws Exception
// */
// public void testNoWordWrapSingleAsterix() throws Exception
// {
// final String LONG_LINE =
// "Now is the time for all good " +
// "chickens to come to *the spurious and costly* " +
// "aid of their coopertino cups, " +
// "and begin sing.";
// final String EXPECTED =
// "Now is the time for all good" + LINEEND +
// "chickens to come to *the spurious and costly*" + LINEEND +
// "aid of their coopertino cups, and" + LINEEND +
// "begin sing.";
// assertEquals (EXPECTED, MarkdownFormatter.format (LONG_LINE, 34, LINEEND));
// }
//
// /**
// * What about dealing with sections that are code should not be broken.
// * @throws Exception
// */
// public void testNoWordWrapCode() throws Exception
// {
// final String LONG_LINE =
// "Now is the time for all good " +
// "chickens to come to `the spurious and costly` " +
// "aid of their coopertino cups, " +
// "and begin sing.";
// final String EXPECTED =
// "Now is the time for all good" + LINEEND +
// "chickens to come to `the spurious and costly`" + LINEEND +
// "aid of their coopertino cups, and" + LINEEND +
// "begin sing.";
// assertEquals (EXPECTED, MarkdownFormatter.format (LONG_LINE, 34, LINEEND));
// }
//
// /**
// * What about dealing with double parenthesis sections ... these shouldn't
// * be broken up.
// * @throws Exception
// */
// public void testNoWordWrapDoubleParens() throws Exception
// {
// final String LONG_LINE =
// "Now is the time for all good " +
// "chickens to come to ((the spurious and costly)) " +
// "aid of their coopertino cups, " +
// "and begin sing.";
// final String EXPECTED =
// "Now is the time for all good" + LINEEND +
// "chickens to come to ((the spurious and costly))" + LINEEND +
// "aid of their coopertino cups, and" + LINEEND +
// "begin sing.";
// assertEquals (EXPECTED, MarkdownFormatter.format (LONG_LINE, 34, LINEEND));
// }
//
//
// /**
// * If a line, embedded in a paragraph has two spaces at the end of the line,
// * these need to be honored and maintained.
// * @throws Exception
// */
// public void testLineBreaksHonored () throws Exception
// {
// final String LONG_LINE =
// "Now is the time for all good " +
// "chickens to come " + LINEEND +
// "to the aid of their coopertino lattes, and " +
// "begin the process of singing.";
// final String EXPECTED =
// "Now is the time for all good" + LINEEND +
// "chickens to come " + LINEEND +
// "to the aid of their coopertino" + LINEEND +
// "lattes, and begin the process of" + LINEEND +
// "singing.";
// assertEquals (EXPECTED, MarkdownFormatter.format (LONG_LINE, 33, LINEEND));
// }
//
// /**
// * A "blockquote" in Markdown can accept > characters at the beginning
// * of all of the lines.
// * @throws Exception
// */
// public void testBlockQuoteSimple () throws Exception
// {
// final String LONG_LINE =
// " > Now is the time for all good " +
// "chickens to come to the aid of " +
// "their coopertino <lattes>, and " +
// "begin the process of singing.";
// final String EXPECTED =
// " > Now is the time for all good" + LINEEND +
// " > chickens to come to the aid of" + LINEEND +
// " > their coopertino <lattes>, and" + LINEEND +
// " > begin the process of singing.";
// assertEquals (EXPECTED, MarkdownFormatter.format (LONG_LINE, 33, LINEEND));
// }
//
// /**
// * A "blockquote" in Markdown can accept > characters at the beginning
// * of all of the lines. Can we accept a version that is already formatted?
// * @throws Exception
// */
// public void testBlockQuoteAlreadyFormatted () throws Exception
// {
// final String EXPECTED =
// " > Now is the time for all good" + LINEEND +
// " > chickens to come to the aid of" + LINEEND +
// " > their coopertino <lattes>, and" + LINEEND +
// " > begin the process of singing.";
// assertEquals (EXPECTED, MarkdownFormatter.format (EXPECTED, 33, LINEEND));
// }
//
// /**
// * Tests that the "list" interface works if each string does not have
// * carriage returns.
// * @throws Exception
// */
// public void testListWithoutLinefeeds () throws Exception
// {
// final String lineend = System.getProperty("line.separator");
//
// final List<String> lines = Arrays.asList ( new String[] {
// "Now is the time for all good",
// "chickens to come to the aid of",
// "their coopertino lattes, and",
// "begin the process of singing."
// } );
// final String EXPECTED =
// "Now is the time for all good" + lineend +
// "chickens to come to the aid of" + lineend + // This line is 30 characters
// "their coopertino lattes, and" + lineend +
// "begin the process of singing.";
//
// final String RESULTS = MarkdownFormatter.format (lines, 30);
// assertEquals (EXPECTED, RESULTS);
// }
//
// /**
// * Tests that the "list" interface works if each string has carriage returns.
// * @throws Exception
// */
// public void testListWithLinefeeds () throws Exception
// {
// final List<String> lines = Arrays.asList ( new String[] {
// "Now is the time for all good chickens to come" + LINEEND,
// "to the aid of" + LINEEND,
// "their coopertino lattes, and" + LINEEND,
// "begin the process of singing."
// } );
// final String EXPECTED =
// "Now is the time for all good" + LINEEND +
// "chickens to come to the aid of" + LINEEND + // This line is 30 characters
// "their coopertino lattes, and" + LINEEND +
// "begin the process of singing.";
//
// final String RESULTS = MarkdownFormatter.format (lines, 30);
// assertEquals (EXPECTED, RESULTS);
// }
//
// /**
// * Tests that we don't break up image tags.
// * @throws Exception
// */
// public void testImageTags () throws Exception
// {
// final List<String> lines = Arrays.asList ( new String[] {
// "Now is the time for all good chickens to come " +
// "to the aid ![Some text description](http://www.google.com/images/logo.gif)" + LINEEND,
// "their coopertino lattes, and" + LINEEND,
// "begin the process of singing."
// } );
// final String EXPECTED =
// "Now is the time for all good" + LINEEND +
// "chickens to come to the aid " + // This line is 30 characters
// "![Some text description](http://www.google.com/images/logo.gif)" + LINEEND +
// "their coopertino lattes, and" + LINEEND +
// "begin the process of singing.";
//
// final String RESULTS = MarkdownFormatter.format (lines, 30);
// assertEquals (EXPECTED, RESULTS);
// }
//}