public static String markupToHTML(String content) {
      // ampersand and lt and gt            content = content.replace("&", "&");
      content = content.replace("<<", "<");
      content = content.replace(">>", ">");
      // add links      content = content.replaceAll("\\[([^\\]]+)\\s+(http[^\\]]+)\\]", "<a href=\"$2\">$1</a>");
      content = content.replaceAll("\\[(http[^\\]\\s]+)\\s+([^\\]]+)\\]", "<a href=\"$1\">$2</a>");
      content = content.replaceAll("\\[(http[^\\]\\s]+)\\]", "<a href=\"$1\">$1</a>");
      // formatting      content = content.replaceAll("\\*\\*([^*]*)\\*\\*", "<b>$1</b>");
      content = content.replaceAll("\\_\\_([^_]*)\\_\\_", "<i>$1</i>");
      content = content.replaceAll("\\-\\-([^_]*)\\-\\-", "<strike>$1</strike>");
      content = content.replaceAll("\\^\\^([^_]*)\\^\\^", "<sup>$1</sup>");
      return content;
  }Ma dokonywać konwersji postów z Bloggeroidowego markup'a do HTMLa.
I mam do tego trochę testów (które dopisuję ostatnio, bo wcześniej UT na Androidzie były tak sobie możliwe)
@Test public void strike() {
    // setup    String input="This is --strike--";
    // examine    String result = Markup.markupToHTML(input);
    // verify    assertEquals("This is <strike>strike</strike>", result);
}
@Test public void sup() {
    // setup    String input="E=mc^^2^^";
    // examine    String result = Markup.markupToHTML(input);
    // verify    assertEquals("E=mc<sup>2</sup>", result);
}
@Test public void link1Https() {
    // setup    String input="Go to [przemelek https://przemelek.blogspot.com]";
    // examine    String result = Markup.markupToHTML(input);
    // verify    assertEquals("Go to <a href=\"https://przemelek.blogspot.com\">przemelek</a>", result);
}Dużo ich jest i wiele osób byłoby za tym by zamiast robić tyle małych testów mieć jeden mniej więcej taki:
@Test public void text() {
    // setup        String input="Most **famouse** __equation__ is E=mc^^2^^\nGo to [http://przemelek.blogspot.com]";
    // examine    String result = Markup.markupToHTML(input);
    // verify    assertEquals("Most <b>famouse</b> <i>equation</i> is E=mc<sup>2</sup>\nGo to <a href=\"http://przemelek.blogspot.com\">http://przemelek.blogspot.com</a>", result);
}Bo ten test testuje praktycznie wszystko co moje multum małych testów.
Niejeden byłby za tym by w ogóle testować jeszcze wyżej, żeby sprawdzić jeszcze inne konwersje za jednym zamachem.
I niby coś w tym jest, w końcu one wszystkie razem występują....
Ale problem jest w tym, że jak taki test padnie to trzeba dość dużo czasu by dojść do tego co w ogóle nie działa.
Jeśli nawet w drugiej wersji testu okaże się, że __ nie jest tłumaczone na kursywę to dojdę do tego dopiero oglądając dokładnie różnicę między tekstem oczekiwanym, a otrzymanym.
W pierwszej wersji testów po prostu padnie mi test italic().
Stąd lepiej czasem napisać trochę głupich i malutkich testów, niż 1 mega test.
Ogólnie jak w teście pojawia się if albo for to wiedź, że coś się dzieje ;-)
Podobne postybeta
Skróty klawiszowe
Tworzenie poprawnych nazw plików :-)
Pomnóżmy sobie duże liczby ;-)
Eksperyment, czyli z Google+ do Bloggera ;-)
Data binding w Polymerze jest oszukany ;-)
Brak komentarzy:
Prześlij komentarz