blob: 55aef241532be94536e8709825ca156f3c411ddc [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2013 Tasktop Technologies and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* David Green - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.wikitext.parser.builder;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import java.util.List;
import org.eclipse.mylyn.wikitext.parser.Attributes;
import org.eclipse.mylyn.wikitext.parser.HeadingAttributes;
import org.eclipse.mylyn.wikitext.parser.ImageAttributes;
import org.eclipse.mylyn.wikitext.parser.LinkAttributes;
import org.eclipse.mylyn.wikitext.parser.DocumentBuilder.BlockType;
import org.eclipse.mylyn.wikitext.parser.DocumentBuilder.SpanType;
import org.eclipse.mylyn.wikitext.parser.builder.EventDocumentBuilder;
import org.eclipse.mylyn.wikitext.parser.builder.event.AcronymEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.BeginBlockEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.BeginDocumentEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.BeginHeadingEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.BeginSpanEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.CharactersEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.CharactersUnescapedEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.DocumentBuilderEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.DocumentBuilderEvents;
import org.eclipse.mylyn.wikitext.parser.builder.event.EndBlockEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.EndDocumentEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.EndHeadingEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.EndSpanEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.EntityReferenceEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.HorizontalRuleEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.ImageEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.ImageLinkEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.LineBreakEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.LinkEvent;
import org.junit.Test;
public class EventDocumentBuilderTest {
private final EventDocumentBuilder builder = new EventDocumentBuilder();
@Test
public void create() {
DocumentBuilderEvents events = builder.getDocumentBuilderEvents();
assertNotNull(events);
assertTrue(events.getEvents().isEmpty());
}
@Test
public void beginDocument() {
builder.beginDocument();
assertEvents(new BeginDocumentEvent());
}
@Test
public void endDocument() {
builder.endDocument();
assertEvents(new EndDocumentEvent());
}
@Test
public void beginBlock() {
builder.beginBlock(BlockType.PREFORMATTED, new Attributes());
assertEvents(new BeginBlockEvent(BlockType.PREFORMATTED, new Attributes()));
}
@Test
public void endBlock() {
builder.endBlock();
assertEvents(new EndBlockEvent());
}
@Test
public void beginSpan() {
builder.beginSpan(SpanType.DELETED, new Attributes());
assertEvents(new BeginSpanEvent(SpanType.DELETED, new Attributes()));
}
@Test
public void endSpan() {
builder.endSpan();
assertEvents(new EndSpanEvent());
}
@Test
public void beginHeading() {
builder.beginHeading(3, new HeadingAttributes());
assertEvents(new BeginHeadingEvent(3, new HeadingAttributes()));
}
@Test
public void endHeading() {
builder.endHeading();
assertEvents(new EndHeadingEvent());
}
@Test
public void characters() {
builder.characters("test 123");
assertEvents(new CharactersEvent("test 123"));
}
@Test
public void charactersUnescaped() {
builder.charactersUnescaped("test 123");
assertEvents(new CharactersUnescapedEvent("test 123"));
}
@Test
public void acronym() {
builder.acronym("one", "two");
assertEvents(new AcronymEvent("one", "two"));
}
@Test
public void entityReference() {
builder.entityReference("amp");
assertEvents(new EntityReferenceEvent("amp"));
}
@Test
public void image() {
builder.image(new ImageAttributes(), "http://example.com/foo.png");
assertEvents(new ImageEvent(new ImageAttributes(), "http://example.com/foo.png"));
}
@Test
public void imageLink() {
builder.imageLink(new LinkAttributes(), new ImageAttributes(), "https://example.com",
"http://example.com/foo.png");
assertEvents(new ImageLinkEvent(new LinkAttributes(), new ImageAttributes(), "https://example.com",
"http://example.com/foo.png"));
}
@Test
public void link() {
builder.link(new LinkAttributes(), "https://example.com", "test");
assertEvents(new LinkEvent(new LinkAttributes(), "https://example.com", "test"));
}
@Test
public void lineBreak() {
builder.lineBreak();
assertEvents(new LineBreakEvent());
}
@Test
public void horizontalRule() {
builder.horizontalRule();
assertEvents(new HorizontalRuleEvent());
}
private void assertEvents(DocumentBuilderEvent... events) {
List<DocumentBuilderEvent> expectedEvents = Arrays.asList(events);
assertEquals(expectedEvents, builder.getDocumentBuilderEvents().getEvents());
EventDocumentBuilder builder2 = new EventDocumentBuilder();
for (DocumentBuilderEvent event : events) {
event.invoke(builder2);
}
assertEquals(expectedEvents, builder2.getDocumentBuilderEvents().getEvents());
}
}