Package de.sebastianbenz.task.parsing

Source Code of de.sebastianbenz.task.parsing.ParserTest

/*******************************************************************************
* Copyright (c) 2011 Sebastian Benz.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     Sebastian Benz - initial API and implementation
******************************************************************************/
/*
* generated by Xtext
*/
package de.sebastianbenz.task.parsing;

import static org.hamcrest.core.Is.is;
import static org.junit.Assert.*;
import static org.junit.Assert.assertThat;

import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.xtext.resource.XtextResourceSet;
import org.junit.Assert;
import org.junit.Test;

import com.google.common.base.Joiner;

import de.sebastianbenz.task.Code;
import de.sebastianbenz.task.EmptyLine;
import de.sebastianbenz.task.Note;
import de.sebastianbenz.task.Project;
import de.sebastianbenz.task.Task;
import de.sebastianbenz.task.util.AbstractTest;
import de.sebastianbenz.task.util.ContentTypesMatcher;


public class ParserTest extends AbstractTest {

  @Test
  public void parseRootProject() throws Exception {
    assertThat(parse("Project:\n"), ContentTypesMatcher.are(Project.class));
    assertThat(parse(" Project:\n"), ContentTypesMatcher.are(Project.class));
    assertThat(parse("  Project:\n"), ContentTypesMatcher.are(Project.class));
    assertThat(parse("  Project:\n"), ContentTypesMatcher.are(Project.class));
    assertThat(parse("    Project:\n"), ContentTypesMatcher.are(Project.class));
    assertThat(parse("   Project:\n"), ContentTypesMatcher.are(Project.class));
    assertThat(parse("    Project:\n"), ContentTypesMatcher.are(Project.class));
  }

  @Test
  public void parseRootProjectWithLineBreak() throws Exception {
    assertThat(parse("Project:\n"), ContentTypesMatcher.are(Project.class));
    assertThat(parse("Project-:\n"), ContentTypesMatcher.are(Project.class));
    assertThat(parse("Project:\n "), ContentTypesMatcher.are(Project.class));
    assertThat(parse("Project:\n  "), ContentTypesMatcher.are(Project.class));
  }

  @Test
  public void parseMixedContent() throws Exception {
    assertThat(parse("note\nProject:\n"), ContentTypesMatcher.are(Note.class, Project.class));
  }
 
  @Test
  public void parseOpenTask() throws Exception {
    assertThat(parse("- a task\n"), ContentTypesMatcher.are(Task.class));
    assertThat(parse("  - a task\n"), ContentTypesMatcher.are(Task.class));
    assertThat(parse("    - a task\n"), ContentTypesMatcher.are(Task.class));
    assertThat(parse("- a task :\n"), ContentTypesMatcher.are(Task.class));
    assertThat(parse("- a task\n"), ContentTypesMatcher.are(Task.class));
    assertThat(parse("- a task\n "), ContentTypesMatcher.are(Task.class));
    assertThat(parse("- a task\n  "), ContentTypesMatcher.are(Task.class));
  }

  @Test
  public void parseClosedTask() throws Exception {
    assertThat(parse("- a task@done\n"), ContentTypesMatcher.are(Task.class));
    assertThat(parse(" - a task @done\n"), ContentTypesMatcher.are(Task.class));
    assertThat(parse("    - a task@done\n"), ContentTypesMatcher.are(Task.class));
    assertThat(parse("- a task :@done\n"), ContentTypesMatcher.are(Task.class));
    assertThat(parse("- a task @done\n"), ContentTypesMatcher.are(Task.class));
    assertThat(parse("- a task@done\n "), ContentTypesMatcher.are(Task.class));
    assertThat(parse("- a task @done\n  "), ContentTypesMatcher.are(Task.class));
  }

  @Test
  public void parseDoneTag() throws Exception {
    assertThat(tagsOf(firstTask(parse("- a task @done\n"))), is("@done"));
  }
 
  @Test
  public void tagShouldBeginWithSpace() throws Exception {
    assertThat(tagsOf(firstTask(parse("- a task@done\n"))), is(""));
  }

  @Test
  public void parseOtherTag() throws Exception {
    assertThat(tagsOf(firstTask(parse("- a task @today\n"))), is("@today"));
  }

  @Test
  public void parseEmptyLines() throws Exception {
    assertThat(parse("\nProject:\n"), ContentTypesMatcher.are(EmptyLine.class, Project.class));
    assertThat(parse("  \nProject:\n"), ContentTypesMatcher.are(EmptyLine.class, Project.class));
    assertThat(parse("Project:\n  \n"), ContentTypesMatcher.are(Project.class, EmptyLine.class));
    assertThat(parse("Project:\n\n\nProject:\n"),
        ContentTypesMatcher.are(Project.class, EmptyLine.class, EmptyLine.class, Project.class));
  }
 
  @Test
  public void noSyntaxErrorsOnTextWithSingleCharacter() throws Exception {
    assertThat(parse("n\nProject:\n"), ContentTypesMatcher.are(Note.class, Project.class));
    assertThat(parse(" n\nProject:\n"), ContentTypesMatcher.are(Note.class, Project.class));
    assertThat(parse(" n \nProject:\n"), ContentTypesMatcher.are(Note.class, Project.class));
  }
 
  @Test
  public void noSyntaxErrorWhenLastLineHasNoLineBreak() throws Exception {
    assertThat(parse("a project:"), ContentTypesMatcher.are(Project.class));
    assertThat(parse("- a task"), ContentTypesMatcher.are(Task.class));
    assertThat(parse("text"), ContentTypesMatcher.are(Note.class));
  }
 
  @Test
  public void parsesCode() throws Exception {
    assertThat(parse("'''Here is some code'''"), ContentTypesMatcher.are(Code.class));
    assertThat(parse("'''\n" +
             "  multiline code" +
             "'''\n"), ContentTypesMatcher.are(Code.class));
  }
 
  @Test
  public void codeBlockParsing() throws Exception {
    URI uri = URI.createPlatformPluginURI("de.sebastianbenz.task.test/examples/SyntaxHighlightingExamples.todo", true);
    Resource resource = new XtextResourceSet().getResource(uri, true);
    assertTrue(Joiner.on("\n").join(resource.getErrors()), resource.getErrors().isEmpty());
  }
 
}
TOP

Related Classes of de.sebastianbenz.task.parsing.ParserTest

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.