Package br.com.caelum.tubaina.parser.html

Source Code of br.com.caelum.tubaina.parser.html.HtmlAndKindleCodeTagTest

package br.com.caelum.tubaina.parser.html;

import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;

import br.com.caelum.tubaina.chunk.CodeChunk;
import br.com.caelum.tubaina.parser.html.desktop.SyntaxHighlighter;

public class HtmlAndKindleCodeTagTest {

  private String code;
  private List<Integer> emptyList;

  @Before
  public void setUp() {
    code = "public static void main(String[] args) {\n" + "    String name = \"Gabriel\";\n"
        + "    System.out.println(\"Hello, \" + name);\n" + "}";
    emptyList = Collections.emptyList();
  }

  @Test
  public void plainJavaCode() throws Exception {
    String options = "java";
    SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class);
    HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter);
    CodeChunk chunk = new CodeChunk(code, options);
    codeTag.parse(chunk);
    verify(htmlCodeHighlighter).highlight(eq(code), eq(options), eq(false), eq(emptyList), Mockito.anyString());
  }

  @Test
  public void javaCodeWithNumberedLines() throws Exception {
    String options = "java #";
    SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class);
    HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter);
    CodeChunk chunk = new CodeChunk(code, options);
    codeTag.parse(chunk);
    verify(htmlCodeHighlighter).highlight(eq(code), eq("java"), eq(true), eq(emptyList), Mockito.anyString());
  }

  @Test
  public void plainRubyCode() throws Exception {
    String options = "ruby";
    String rubyCode = "@name = \"Gabriel\"\n" + "puts \"Hello, \" + name";
    SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class);
    HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter);
    CodeChunk chunk = new CodeChunk(rubyCode, options);
    codeTag.parse(chunk);
    verify(htmlCodeHighlighter).highlight(eq(rubyCode), eq("ruby"), eq(false), eq(emptyList), Mockito.anyString());
  }

  @Test
  public void noLanguageDefinedIsTreatedAsText() throws Exception {
    String options = "";
    String noParticularLanguage = "Some text explaining some new bizarre\n" + "syntax in a very code alike way";
    SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class);
    HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter);
    CodeChunk chunk = new CodeChunk(noParticularLanguage, options);
    codeTag.parse(chunk);
    verify(htmlCodeHighlighter).highlight(eq(noParticularLanguage), eq("text"), eq(false), eq(emptyList), Mockito.anyString());
  }

  @Test
  public void noLanguageDefinedIsTreatedAsTextEvenWhenItIsNumbered() throws Exception {
    String options = "#";
    String noParticularLanguage = "Some text explaining some new bizarre\n" + "syntax in a very code alike way";
    SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class);
    HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter);
    CodeChunk chunk = new CodeChunk(noParticularLanguage, options);
    codeTag.parse(chunk);
    verify(htmlCodeHighlighter).highlight(eq(noParticularLanguage), eq("text"), eq(true), eq(emptyList), Mockito.anyString());
  }

  @Test
  public void shouldNotConsiderLabelAsLanguage() throws Exception {
    String options = "label=world";
    String noParticularLanguage = "Some code";
    SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class);
    HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter);
    CodeChunk chunk = new CodeChunk(noParticularLanguage, options);
    codeTag.parse(chunk);
    verify(htmlCodeHighlighter).highlight(eq(noParticularLanguage), eq("text"), eq(false), eq(emptyList), Mockito.anyString());
  }

  @Test
  public void shouldConsiderLineHighlightOption() throws Exception {
    String options = "h=1,2";
    String noParticularLanguage = "Some code";
    SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class);
    HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter);
    CodeChunk chunk = new CodeChunk(noParticularLanguage, options);
    codeTag.parse(chunk);
    verify(htmlCodeHighlighter).highlight(eq(noParticularLanguage), eq("text"), eq(false), eq(Arrays.asList(1, 2)), Mockito.anyString());
  }
 
  @Test
  public void shouldConsiderPygmentsOptions() throws Exception {
    String options = "label=somelabel options=\'startinline=true\'";
    String noParticularLanguage = "Some code";
    SyntaxHighlighter htmlCodeHighlighter = mock(SyntaxHighlighter.class);
    HtmlAndKindleCodeTag codeTag = new HtmlAndKindleCodeTag(htmlCodeHighlighter);
    CodeChunk chunk = new CodeChunk(noParticularLanguage, options);
    codeTag.parse(chunk);
    verify(htmlCodeHighlighter).highlight(eq(noParticularLanguage), eq("text"), eq(false), eq(emptyList), eq("startinline=true"));
  }

}
TOP

Related Classes of br.com.caelum.tubaina.parser.html.HtmlAndKindleCodeTagTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.