Package org.eclipse.xtext.xdoc.tests

Source Code of org.eclipse.xtext.xdoc.tests.HTMLGeneratorTest

package org.eclipse.xtext.xdoc.tests;

import java.io.File;
import java.net.URLDecoder;

import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.xtext.generator.AbstractFileSystemAccess;
import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
import org.eclipse.xtext.resource.XtextResource;
import org.eclipse.xtext.resource.XtextResourceSet;
import org.eclipse.xtext.xdoc.generator.AbstractSectionExtension;
import org.eclipse.xtext.xdoc.generator.HtmlGenerator;
import org.eclipse.xtext.xdoc.generator.Outlets;
import org.eclipse.xtext.xdoc.generator.util.HTMLNamingExtensions;
import org.eclipse.xtext.xdoc.xdoc.AbstractSection;
import org.eclipse.xtext.xdoc.xdoc.Chapter;
import org.eclipse.xtext.xdoc.xdoc.Document;
import org.eclipse.xtext.xdoc.xdoc.Emphasize;
import org.eclipse.xtext.xdoc.xdoc.Identifiable;
import org.eclipse.xtext.xdoc.xdoc.Section;
import org.eclipse.xtext.xdoc.xdoc.TextOrMarkup;
import org.eclipse.xtext.xdoc.xdoc.TextPart;
import org.eclipse.xtext.xdoc.xdoc.XdocFactory;
import org.eclipse.xtext.xdoc.xdoc.XdocFile;

import com.google.inject.Inject;

public class HTMLGeneratorTest extends AbstractXdocGeneratorTest {

  public static String HTML_SRC = "html" + File.separator;

  @Inject
  private HtmlGenerator generator;
  @Inject
  private HTMLNamingExtensions naming;
  @Inject
  private AbstractSectionExtension utils;

  protected void generate(Document obj) throws Exception {
    AbstractFileSystemAccess fsa = new JavaIoFileSystemAccess();
    fsa.setOutputPath(Outlets.WEB_SITE, Outlets.WEB_SITE_PATH_NAME);
    fsa.setOutputPath(System.getProperty("user.dir") + File.separatorChar+"test-gen"+ File.separatorChar+ "html" + File.separatorChar);
    generator.generate(obj, fsa);
  }

  public void testGenerationAllFilesFullHirarchy() throws Exception {
    String resName = "downToSection4Test";
    Document doc = createDocumentFrom(HTML_SRC + resName + ".xdoc");
    generate(doc);
    assertGenerated(doc);
    for (AbstractSection as : doc.getChapters()) {
      generate(as);
      assertGenerated(as);
      for(AbstractSection next: utils.sections(as)){
        generate(next);
        assertGenerated(next);
      }
    }
  }

//  public void testHeader() throws Exception {
//    Document doc = initDoc("foo");
//    String expected = "<head>\n" +
//          "  <META http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">\n" +
//        "  <title>foo</title>\n" +
//        "  <link href=\"book.css\" rel=\"stylesheet\" type=\"text/css\">\n" +
//        "  <link href=\"code.css\" rel=\"stylesheet\" type=\"text/css\">\n" +
//        "</head>\n";
//    String actual = generator.header(doc.getTitle()).toString();
//    assertEquals(expected, actual);
//  }

//  public void testEmptyBody() throws Exception {
//    Document doc = initDoc("foo");
//    String expected = "<body>\n" +
//        "</body>\n";
//    String actual = generator.body(doc).toString();
//    assertEquals(expected, actual);
//  }

  public void testToc() throws Exception {
    Document doc = createDocumentFrom(HTML_SRC+ "downToSection4Test.xdoc");
    String expected = "<div class=\"toc\" >\n" +
        "  <ol>\n" +
        "    <li><a href=\"downToSection4Test-0.html\" >bar</a>\n" +
        "    <ol>\n" +
        "      <li><a href=\"downToSection4Test-0-0.html\" >foo</a></li>\n" +
        "      <li><a href=\"downToSection4Test-0-1.html\" >atom</a></li>\n" +
        "    </ol>\n" +
        "    </li>\n" +
        "  </ol>\n" +
        "</div>\n";
    String actual = generator.toc(doc).toString();
    assertEquals(expected, actual);
  }

  public void testEm() throws Exception {
    XdocFactory fac = XdocFactory.eINSTANCE;
    Emphasize emphasize = fac.createEmphasize();
    TextOrMarkup textOrMarkup = fac.createTextOrMarkup();
    TextPart textPart = fac.createTextPart();
    textPart.setText("Testtext_");
    textOrMarkup.getContents().add(textPart);
    emphasize.getContents().add(textOrMarkup);
    String expected = "<em>Testtext_</em>";
    String actual = generator.genText(emphasize).toString();
    assertEquals(expected, actual);
    // and for two paragraphs in one em
    TextOrMarkup textOrMarkup2 = fac.createTextOrMarkup();
    TextPart textPart2 = fac.createTextPart();
    textPart2.setText("more test");
    textOrMarkup2.getContents().add(textPart2);
    emphasize.getContents().add(textOrMarkup2);
    expected = "<em>\n" +
        "<p>\n" +
        "Testtext_\n" +
        "</p>\n" +
        "<p>\n" +
        "more test\n" +
        "</p>\n" +
        "</em>";
    actual = generator.genText(emphasize).toString();
    assertEquals(expected, actual);
  }

  @Override
  public void testGenCodeWithLanguage() throws Exception {
    Document document = createDocumentFrom("codeWithLanguageTest.xdoc");
    generate(document);
    assertGenerated(document);
    generate(document.getChapters().get(0));
    assertGenerated(document.getChapters().get(0));
    validate("codeWithLanguageTest.html", name(document.getChapters().get(0)));
  }

  @Override
  public void testGenCode() throws Exception {
    Document document = createDocumentFrom("codeTest.xdoc");
    generate(document);
    assertGenerated(document);
    generate(document.getChapters().get(0));
    assertGenerated(document.getChapters().get(0));
    validate("codeTest.html", name(document.getChapters().get(0)));
  }

  @SuppressWarnings("deprecation")
  private String name(Identifiable id) {
    return URLDecoder.decode(naming.getResourceURL(id));
  }

  @Override
  public void testARef() throws Exception {
    XdocFile file = pTest.getDocFromFile(ParserTest.TEST_FILE_DIR + "aRefTest.xdoc");
    generate(file.getMainSection());
    assertGenerated(file.getMainSection());
    validate("aRefTest.html", name(file.getMainSection()));
  }

  @Override
  public void testCodeRef() throws Exception {
    XdocFile file = pTest.getDocFromFile(ParserTest.TEST_FILE_DIR + "codeRef.xdoc");
    generate(file.getMainSection());
    assertGenerated(file.getMainSection());
    validate("codeRefTest.html", name(file.getMainSection()));
  }

  @Override
  public void testComment() throws Exception {
    XdocFile file = pTest.getDocFromFile(ParserTest.TEST_FILE_DIR + "commentTest.xdoc");
    generate(file.getMainSection());
    assertGenerated(file.getMainSection());
    validate("commentTest.html", name(file.getMainSection()));
  }

  @Override
  public void testLink() throws Exception {
    XdocFile file = pTest.getDocFromFile(ParserTest.TEST_FILE_DIR + "linkTest.xdoc");
    generate(file.getMainSection());
    assertGenerated(file.getMainSection());
    validate("linkTest.html", name(file.getMainSection()));
  }

  @Override
  public void testRefText() throws Exception {
    XdocFile file = pTest.getDocFromFile(ParserTest.TEST_FILE_DIR + "namedRefAndTextTest.xdoc");
    generate(file.getMainSection());
    assertGenerated(file.getMainSection());
    validate("namedRefAndTextTest.html", name(file.getMainSection()));
  }

  @Override
  public void testNestedList() throws Exception {
    XdocFile file = pTest.getDocFromFile(ParserTest.TEST_FILE_DIR + "nestedListTest.xdoc");
    generate(file.getMainSection());
    assertGenerated(file.getMainSection());
    validate("nestedListTest.html", name(file.getMainSection()));
  }

  @Override
  public void testSimpleRef() throws Exception {
    XdocFile file = pTest.getDocFromFile(ParserTest.TEST_FILE_DIR + "simpleRefTest.xdoc");
    generate(file.getMainSection());
    assertGenerated(file.getMainSection());
    validate("simpleRefTest.html", name(file.getMainSection()));
  }

  @Override
  public void testTable() throws Exception {
    XdocFile file = pTest.getDocFromFile(ParserTest.TEST_FILE_DIR + "table.xdoc");
    generate(file.getMainSection());
    assertGenerated(file.getMainSection());
    validate("table.html", name(file.getMainSection()));
  }

  @Override
  public void testTwoChapters() throws Exception {
    XtextResourceSet set = get(XtextResourceSet.class);
    Resource res = set.getResource(URI.createURI(ParserTest.TEST_FILE_DIR + "01-twoChapters.xdoc"), true);
    Chapter chapter0 = (Chapter) ((XdocFile) getModel((XtextResource)res)).getMainSection();
    res = set.getResource(URI.createURI(ParserTest.TEST_FILE_DIR + "02-twoChapters.xdoc"), true);
    Chapter chapter1 = (Chapter) ((XdocFile) getModel((XtextResource)res)).getMainSection();
    XdocFile file = (XdocFile) getModel((XtextResource)set.getResource(URI.createURI(ParserTest.TEST_FILE_DIR + "twoChaptersDoc.xdoc"), true));
    Document doc = (Document) file.getMainSection();
    for(int i = 0; i < doc.getChapters().size(); i++) {
      Chapter chapter = doc.getChapters().get(i);
      generate(chapter);
    }
    generate(doc);
    validate("01-twoChapters.html", name(chapter0));
    validate("02-twoChapters.html", name(chapter1));
    validate("twoChaptersDoc.html", name(doc));
  }

  @Override
  public void testImg() throws Exception {
    assertTrue("Implement", false);
  }

  @Override
  public void testEscape() throws Exception {
    XdocFile file = pTest.getDocFromFile(ParserTest.TEST_FILE_DIR + "testEscape.xdoc");
    generate(file.getMainSection());
    assertGenerated(file.getMainSection());
    validate("testEscape.html", name(file.getMainSection()));
  }

  @Override
  protected Document initDocFromFile(String string, String filename)
      throws Exception {
    Document doc = super.initDocFromFile(string, HTML_SRC + filename);
    URI uri = doc.eResource().getURI();
    URI appendSegment = uri.trimSegments(1).appendSegment(string+".xdoc");
    doc.eResource().setURI(appendSegment);
    return doc;
  }

  @Override
  protected void generate(EObject eObject) {
    // TODO Auto-generated method stub

  }

  @Override
  public void testFullHirarchy() throws Exception {
    // TODO Auto-generated method stub

  }

  public Chapter getChapter(String title) {
    Chapter chapter = XdocFactory.eINSTANCE.createChapter();
    TextPart tp = XdocFactory.eINSTANCE.createTextPart();
    tp.setText(title);
    TextOrMarkup tom = XdocFactory.eINSTANCE.createTextOrMarkup();
    tom.getContents().add(tp);
    chapter.setTitle(tom);
    return chapter;
  }

  public Section getSection(String title) {
    Section section = XdocFactory.eINSTANCE.createSection();
    TextPart tp = XdocFactory.eINSTANCE.createTextPart();
    tp.setText(title);
    TextOrMarkup tom = XdocFactory.eINSTANCE.createTextOrMarkup();
    tom.getContents().add(tp);
    section.setTitle(tom);
    return section;
  }

  public void assertGenerated(AbstractSection doc) {
    File file = new File(RESULT_DIR + HTML_SRC + name(doc));
    boolean fileGenerated = file.exists();
    assertTrue(name(doc) + " not generated", fileGenerated);
  }

  @Override
  protected void validate(String expected, String result) throws Exception {
    super.validate(EXPECTATION_DIR + HTML_SRC + expected, RESULT_DIR + HTML_SRC + result);
  }

}
TOP

Related Classes of org.eclipse.xtext.xdoc.tests.HTMLGeneratorTest

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.