这是indexloc提供的服务,不要输入任何密码
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions testing-modules/testing-libraries-3/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,24 @@
<version>${system-lambda.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>uk.org.webcompere</groupId>
<artifactId>test-gadgets-jupiter</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>uk.org.webcompere</groupId>
<artifactId>test-gadgets-junit4</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>uk.org.webcompere</groupId>
<artifactId>test-gadgets-core</artifactId>
<version>1.0.2</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
Expand Down Expand Up @@ -94,6 +112,7 @@
<cucumber.version>4.8.0</cucumber.version>
<system-lambda.version>1.0.0</system-lambda.version>
<system-rules.version>1.19.0</system-rules.version>
<java.version>11</java.version>
</properties>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
package com.baeldung.testdatafactory;

import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;

import static java.util.stream.Collectors.toList;

public class Converter {
private static final Pattern TITLE_STRIP = Pattern.compile("#\\s*(.*)");

/**
* Convert the lines to paragraphs. Break sentences by full stops. Ignore formatting.
* @param text input text
* @return {@link Document} object
*/
public static Document fromText(String text) {
Document document = new Document();
document.setParagraphs(Arrays.stream(text.split("\n")).map(Converter::toParagraph).collect(toList()));
return document;
}

/**
* Remove the # prefix from a title line
* @param line the line
* @return the non title part
*/
private static String stripTitle(String line) {
Matcher m = TITLE_STRIP.matcher(line);
m.matches();
return m.group(1);
}


/**
* Convert a document into a plaintext
* @param doc the document
* @return plaintext form
*/
public static String fromDocument(Document doc) {
return doc.getParagraphs()
.stream()
.map(Converter::toParagraphPlaintext)
.collect(Collectors.joining("\n"));
}

private static String toParagraphPlaintext(Paragraph paragraph) {
return paragraph.getSentences().stream()
.map(sentence -> String.join(" ", sentence.getTokens()))
.collect(Collectors.joining(" "));
}

private static String toParagraphMarkdown(Paragraph paragraph) {
return (paragraph.getStyle().equals(Paragraph.Style.HEADING) ? "# " : "") + toParagraphPlaintext(paragraph);
}

/**
* Convert a document into markdown
* @param doc the document
* @return similar to plaintext, but with headings prefixed by #
*/
public static String toMarkdown(Document doc) {
return doc.getParagraphs()
.stream()
.map(Converter::toParagraphMarkdown)
.collect(Collectors.joining("\n"));
}

/**
* Parse the markdown and return a document
* @param markdown the markdown file
* @return the document
*/
public static Document fromMarkdown(String markdown) {
Document document = new Document();
document.setParagraphs(Arrays.stream(markdown.split("\n")).map(Converter::toParagraphFromMarkdown).collect(toList()));
return document;
}

private static Paragraph toParagraphFromMarkdown(String line) {
if (line.startsWith("#")) {
return toParagraph(stripTitle(line), Paragraph.Style.HEADING);
}
return toParagraph(line, Paragraph.Style.NORMAL);
}

private static Paragraph toParagraph(String line) {
return toParagraph(line, Paragraph.Style.NORMAL);
}

private static Paragraph toParagraph(String line, Paragraph.Style style) {
Paragraph paragraph = new Paragraph();
paragraph.setStyle(style);
paragraph.setSentences(Arrays.stream(line.split("(?<=\\.)")).map(Converter::toSentence).collect(toList()));
return paragraph;
}

private static Sentence toSentence(String sentenceText) {
Sentence sentence = new Sentence();
sentence.setTokens(Arrays.asList(sentenceText.split(" ")));
return sentence;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.baeldung.testdatafactory;

import lombok.Data;

import java.util.List;

@Data
public class Document {
private List<Paragraph> paragraphs;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.baeldung.testdatafactory;

import lombok.Data;

import java.util.List;

@Data
public class Paragraph {
public enum Style { NORMAL, HEADING };

private List<Sentence> sentences;
private Style style = Style.NORMAL;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.baeldung.testdatafactory;

import lombok.Data;

import java.util.List;

@Data
public class Sentence {
private List<String> tokens;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.baeldung.testdatafactory;

import uk.org.webcompere.testgadgets.testdatafactory.TestData;
import uk.org.webcompere.testgadgets.testdatafactory.TestDataCollection;

@TestDataCollection
public interface AllVersions {
@TestData("text.json")
Document document();

@TestData("text.md")
String markdown();

@TestData("text.txt")
String text();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package com.baeldung.testdatafactory;

import org.junit.Rule;
import org.junit.Test;
import uk.org.webcompere.testgadgets.testdatafactory.TestData;
import uk.org.webcompere.testgadgets.testdatafactory.TestDataFieldsRule;
import uk.org.webcompere.testgadgets.testdatafactory.TestDataLoader;
import uk.org.webcompere.testgadgets.testdatafactory.TextLoader;

import static org.assertj.core.api.Assertions.assertThat;

public class ConverterAllVersionsCollectionJUnit4UnitTest {
@Rule
public TestDataFieldsRule rule = new TestDataFieldsRule(
new TestDataLoader()
.addLoader(".md", new TextLoader())
.addPath("testdata"));

@TestData("dickens")
private AllVersions dickens;

@TestData("shakespeare")
private AllVersions shakespeare;

@Test
public void markdownToDocumentDickens() {
assertThat(Converter.fromMarkdown(dickens.markdown())).isEqualTo(dickens.document());
}

@Test
public void textToDocumentDickens() {
Document document = dickens.document();
document.getParagraphs().get(0).setStyle(Paragraph.Style.NORMAL);
assertThat(Converter.fromText(dickens.text())).isEqualTo(document);
}

@Test
public void documentToMarkdownDickens() {
assertThat(Converter.toMarkdown(dickens.document())).isEqualTo(dickens.markdown());
}

@Test
public void markdownToDocumentShakespeare() {
assertThat(Converter.fromMarkdown(shakespeare.markdown())).isEqualTo(shakespeare.document());
}

@Test
public void textToDocumentShakespeare() {
Document document = shakespeare.document();
document.getParagraphs().get(0).setStyle(Paragraph.Style.NORMAL);
document.getParagraphs().get(1).setStyle(Paragraph.Style.NORMAL);
assertThat(Converter.fromText(shakespeare.text())).isEqualTo(document);
}

@Test
public void documentToMarkdownShakespeare() {
assertThat(Converter.toMarkdown(shakespeare.document())).isEqualTo(shakespeare.markdown());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package com.baeldung.testdatafactory;

import org.junit.jupiter.api.Test;
import uk.org.webcompere.testgadgets.testdatafactory.FileTypeLoader;
import uk.org.webcompere.testgadgets.testdatafactory.Loader;
import uk.org.webcompere.testgadgets.testdatafactory.TestData;
import uk.org.webcompere.testgadgets.testdatafactory.TestDataFactory;
import uk.org.webcompere.testgadgets.testdatafactory.TestDataLoader;
import uk.org.webcompere.testgadgets.testdatafactory.TextLoader;

import static org.assertj.core.api.Assertions.assertThat;

@TestDataFactory(
loaders = { @FileTypeLoader(extension = ".md", loadedBy = TextLoader.class) },
path = "testdata")
class ConverterAllVersionsCollectionJUnit5UnitTest {
@TestData("dickens")
private AllVersions dickens;

@TestData("shakespeare")
private AllVersions shakespeare;

@Loader
private TestDataLoader loader;

@Test
void markdownToDocumentDickens() {
assertThat(Converter.fromMarkdown(dickens.markdown())).isEqualTo(dickens.document());
}

@Test
void textToDocumentDickens() {
Document document = dickens.document();
document.getParagraphs().get(0).setStyle(Paragraph.Style.NORMAL);
assertThat(Converter.fromText(dickens.text())).isEqualTo(document);
}

@Test
void documentToMarkdownDickens() {
assertThat(Converter.toMarkdown(dickens.document())).isEqualTo(dickens.markdown());
}

@Test
void markdownToDocumentShakespeare() {
assertThat(Converter.fromMarkdown(shakespeare.markdown())).isEqualTo(shakespeare.document());
}

@Test
void textToDocumentShakespeare() {
Document document = shakespeare.document();
document.getParagraphs().get(0).setStyle(Paragraph.Style.NORMAL);
document.getParagraphs().get(1).setStyle(Paragraph.Style.NORMAL);
assertThat(Converter.fromText(shakespeare.text())).isEqualTo(document);
}

@Test
void documentToMarkdownShakespeare() {
assertThat(Converter.toMarkdown(shakespeare.document())).isEqualTo(shakespeare.markdown());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.baeldung.testdatafactory;

import org.junit.jupiter.api.Test;
import uk.org.webcompere.testgadgets.testdatafactory.FileTypeLoader;
import uk.org.webcompere.testgadgets.testdatafactory.Loader;
import uk.org.webcompere.testgadgets.testdatafactory.TestData;
import uk.org.webcompere.testgadgets.testdatafactory.TestDataFactory;
import uk.org.webcompere.testgadgets.testdatafactory.TestDataLoader;
import uk.org.webcompere.testgadgets.testdatafactory.TextLoader;

import static org.assertj.core.api.Assertions.assertThat;

@TestDataFactory
class ConverterAllVersionsCollectionStaticLoaderJUnit5UnitTest {
@Loader
private static TestDataLoader customLoader = new TestDataLoader()
.addLoader(".md", new TextLoader())
.addPath("testdata");

@TestData("dickens")
private AllVersions dickens;

@TestData("shakespeare")
private AllVersions shakespeare;

@Test
void givenMarkdown_thenConvertToDocument() {
assertThat(Converter.fromMarkdown(dickens.markdown())).isEqualTo(dickens.document());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.baeldung.testdatafactory;

import org.junit.jupiter.api.Test;

import java.io.IOException;

import static org.assertj.core.api.AssertionsForClassTypes.assertThat;

class ConverterJavaFactoryUnitTest {

@Test
void givenDocument_whenConvertToText_thenMatches() {
Document source = TestDataFactory.twoParagraphsAsDocument();

String asPlaintext = TestDataFactory.twoParagraphs();

assertThat(Converter.fromDocument(source)).isEqualTo(asPlaintext);
}

@Test
void givenDocumentAndPlaintextInFiles_whenConvertToText_thenMatches() throws IOException {
Document source = TestDataFilesFactory.twoParagraphsAsDocument();

String asPlaintext = TestDataFilesFactory.twoParagraphs();

assertThat(Converter.fromDocument(source)).isEqualTo(asPlaintext);
}
}
Loading