diff --git a/testing-modules/testing-libraries-3/pom.xml b/testing-modules/testing-libraries-3/pom.xml index b3d3a9b1eead..d41dc368c2f3 100644 --- a/testing-modules/testing-libraries-3/pom.xml +++ b/testing-modules/testing-libraries-3/pom.xml @@ -60,6 +60,24 @@ ${system-lambda.version} test + + uk.org.webcompere + test-gadgets-jupiter + 1.0.2 + test + + + uk.org.webcompere + test-gadgets-junit4 + 1.0.2 + test + + + uk.org.webcompere + test-gadgets-core + 1.0.2 + test + @@ -94,6 +112,7 @@ 4.8.0 1.0.0 1.19.0 + 11 \ No newline at end of file diff --git a/testing-modules/testing-libraries-3/src/main/java/com/baeldung/testdatafactory/Converter.java b/testing-modules/testing-libraries-3/src/main/java/com/baeldung/testdatafactory/Converter.java new file mode 100644 index 000000000000..77787fd4e752 --- /dev/null +++ b/testing-modules/testing-libraries-3/src/main/java/com/baeldung/testdatafactory/Converter.java @@ -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; + } + +} diff --git a/testing-modules/testing-libraries-3/src/main/java/com/baeldung/testdatafactory/Document.java b/testing-modules/testing-libraries-3/src/main/java/com/baeldung/testdatafactory/Document.java new file mode 100644 index 000000000000..0f5192976542 --- /dev/null +++ b/testing-modules/testing-libraries-3/src/main/java/com/baeldung/testdatafactory/Document.java @@ -0,0 +1,10 @@ +package com.baeldung.testdatafactory; + +import lombok.Data; + +import java.util.List; + +@Data +public class Document { + private List paragraphs; +} diff --git a/testing-modules/testing-libraries-3/src/main/java/com/baeldung/testdatafactory/Paragraph.java b/testing-modules/testing-libraries-3/src/main/java/com/baeldung/testdatafactory/Paragraph.java new file mode 100644 index 000000000000..87fcb89970f5 --- /dev/null +++ b/testing-modules/testing-libraries-3/src/main/java/com/baeldung/testdatafactory/Paragraph.java @@ -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 sentences; + private Style style = Style.NORMAL; +} diff --git a/testing-modules/testing-libraries-3/src/main/java/com/baeldung/testdatafactory/Sentence.java b/testing-modules/testing-libraries-3/src/main/java/com/baeldung/testdatafactory/Sentence.java new file mode 100644 index 000000000000..770ec52cd4bd --- /dev/null +++ b/testing-modules/testing-libraries-3/src/main/java/com/baeldung/testdatafactory/Sentence.java @@ -0,0 +1,10 @@ +package com.baeldung.testdatafactory; + +import lombok.Data; + +import java.util.List; + +@Data +public class Sentence { + private List tokens; +} diff --git a/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/AllVersions.java b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/AllVersions.java new file mode 100644 index 000000000000..67ed5542c613 --- /dev/null +++ b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/AllVersions.java @@ -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(); +} diff --git a/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterAllVersionsCollectionJUnit4UnitTest.java b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterAllVersionsCollectionJUnit4UnitTest.java new file mode 100644 index 000000000000..2d34a8975f10 --- /dev/null +++ b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterAllVersionsCollectionJUnit4UnitTest.java @@ -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()); + } +} diff --git a/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterAllVersionsCollectionJUnit5UnitTest.java b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterAllVersionsCollectionJUnit5UnitTest.java new file mode 100644 index 000000000000..b41d9355bcee --- /dev/null +++ b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterAllVersionsCollectionJUnit5UnitTest.java @@ -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()); + } +} diff --git a/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterAllVersionsCollectionStaticLoaderJUnit5UnitTest.java b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterAllVersionsCollectionStaticLoaderJUnit5UnitTest.java new file mode 100644 index 000000000000..d6de94034bd2 --- /dev/null +++ b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterAllVersionsCollectionStaticLoaderJUnit5UnitTest.java @@ -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()); + } +} diff --git a/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterJavaFactoryUnitTest.java b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterJavaFactoryUnitTest.java new file mode 100644 index 000000000000..6b951c326ed9 --- /dev/null +++ b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterJavaFactoryUnitTest.java @@ -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); + } +} diff --git a/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterLazyLoadingFieldsJUnit4UnitTest.java b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterLazyLoadingFieldsJUnit4UnitTest.java new file mode 100644 index 000000000000..02fa0645e5c2 --- /dev/null +++ b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterLazyLoadingFieldsJUnit4UnitTest.java @@ -0,0 +1,29 @@ +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 java.util.function.Supplier; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; + +public class ConverterLazyLoadingFieldsJUnit4UnitTest { + @Rule + public TestDataFieldsRule rule = new TestDataFieldsRule( + new TestDataLoader().addPath("testdata")); + + @TestData + private Supplier twoParagraphs; + + @TestData("twoParagraphs.txt") + private Supplier twoParagraphsText; + + @Test + public void givenDocumentAndPlaintextInFiles_whenConvertToText_thenMatches() { + assertThat(Converter.fromDocument(twoParagraphs.get())) + .isEqualTo(twoParagraphsText.get()); + } +} diff --git a/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterLazyLoadingFieldsJUnit5UnitTest.java b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterLazyLoadingFieldsJUnit5UnitTest.java new file mode 100644 index 000000000000..5451e55e4d31 --- /dev/null +++ b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterLazyLoadingFieldsJUnit5UnitTest.java @@ -0,0 +1,24 @@ +package com.baeldung.testdatafactory; + +import org.junit.jupiter.api.Test; +import uk.org.webcompere.testgadgets.testdatafactory.TestData; +import uk.org.webcompere.testgadgets.testdatafactory.TestDataFactory; + +import java.util.function.Supplier; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; + +@TestDataFactory(path = "testdata") +class ConverterLazyLoadingFieldsJUnit5UnitTest { + + @TestData + private Supplier twoParagraphs; + + @TestData("twoParagraphs.txt") + private Supplier twoParagraphsText; + + @Test + void givenDocumentAndPlaintextInFiles_whenConvertToText_thenMatches() { + assertThat(Converter.fromDocument(twoParagraphs.get())).isEqualTo(twoParagraphsText.get()); + } +} diff --git a/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterStaticLoaderJUnit4UnitTest.java b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterStaticLoaderJUnit4UnitTest.java new file mode 100644 index 000000000000..759e78a8f2f2 --- /dev/null +++ b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterStaticLoaderJUnit4UnitTest.java @@ -0,0 +1,57 @@ +package com.baeldung.testdatafactory; + +import org.junit.ClassRule; +import org.junit.Rule; +import org.junit.Test; +import uk.org.webcompere.testgadgets.testdatafactory.Immutable; +import uk.org.webcompere.testgadgets.testdatafactory.TestData; +import uk.org.webcompere.testgadgets.testdatafactory.TestDataClassRule; +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 ConverterStaticLoaderJUnit4UnitTest { + @ClassRule + public static TestDataClassRule classRule = new TestDataClassRule( + new TestDataLoader() + .addLoader(".md", new TextLoader()) + .addPath("testdata")); + + @Rule + public TestDataFieldsRule rule = new TestDataFieldsRule(classRule.getLoader()); + + @TestData("twoParagraphs.txt") + private static String twoParagraphsTextStatic; + + @TestData("twoParagraphs.txt") + private String twoParagraphsTextField; + + @TestData("twoParagraphs.json") + private static Document twoParagraphsStatic; + + @TestData + private Document twoParagraphs; + + @TestData(value = "twoParagraphs.json", immutable = Immutable.IMMUTABLE) + private static Document twoParagraphsStaticImmutable; + + @TestData(value = "twoParagraphs.json", immutable = Immutable.IMMUTABLE) + private Document twoParagraphsImmutable; + + @Test + public void givenInjectedFieldInSharedLoader_alwaysGetsSameAnswer() { + assertThat(twoParagraphsTextStatic).isSameAs(twoParagraphsTextField); + } + + @Test + public void givenInjectedFieldInSharedLoaderDefaultMutability_alwaysGetsDifferentAnswer() { + assertThat(twoParagraphsStatic).isNotSameAs(twoParagraphs); + } + + @Test + public void givenInjectedFieldInSharedLoaderImmutable_alwaysGetsSameAnswer() { + assertThat(twoParagraphsStaticImmutable).isSameAs(twoParagraphsImmutable); + } +} diff --git a/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterTestDataCollectionJUnit4UnitTest.java b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterTestDataCollectionJUnit4UnitTest.java new file mode 100644 index 000000000000..2a8e961c60de --- /dev/null +++ b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterTestDataCollectionJUnit4UnitTest.java @@ -0,0 +1,27 @@ +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.TestDataCollection; +import uk.org.webcompere.testgadgets.testdatafactory.TestDataFieldsRule; +import uk.org.webcompere.testgadgets.testdatafactory.TestDataLoader; + +import java.util.function.Supplier; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; + +public class ConverterTestDataCollectionJUnit4UnitTest { + @Rule + public TestDataFieldsRule rule = new TestDataFieldsRule( + new TestDataLoader().addPath("testdata")); + + @TestData + private TwoParagraphsCollection collection; + + @Test + public void givenDocumentAndPlaintextInFiles_whenConvertToText_thenMatches() { + assertThat(Converter.fromDocument(collection.twoParagraphs())) + .isEqualTo(collection.twoParagraphsText()); + } +} diff --git a/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterTestDataCollectionJUnit5UnitTest.java b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterTestDataCollectionJUnit5UnitTest.java new file mode 100644 index 000000000000..1d35205fcb63 --- /dev/null +++ b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterTestDataCollectionJUnit5UnitTest.java @@ -0,0 +1,26 @@ +package com.baeldung.testdatafactory; + +import org.junit.jupiter.api.Test; +import uk.org.webcompere.testgadgets.testdatafactory.TestData; +import uk.org.webcompere.testgadgets.testdatafactory.TestDataFactory; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; + +@TestDataFactory(path = "testdata") +class ConverterTestDataCollectionJUnit5UnitTest { + + @TestData + private TwoParagraphsCollection collection; + + @Test + void givenDocumentAndPlaintextInFiles_whenConvertToText_thenMatches() { + assertThat(Converter.fromDocument(collection.twoParagraphs())) + .isEqualTo(collection.twoParagraphsText()); + } + + @Test + void givenInjectedCollection_whenConvertToText_thenMatches(@TestData TwoParagraphsCollection collection) { + assertThat(Converter.fromDocument(collection.twoParagraphs())) + .isEqualTo(collection.twoParagraphsText()); + } +} diff --git a/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterTestFactoryFieldsJUnit4UnitTest.java b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterTestFactoryFieldsJUnit4UnitTest.java new file mode 100644 index 000000000000..5f0717d5ad32 --- /dev/null +++ b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterTestFactoryFieldsJUnit4UnitTest.java @@ -0,0 +1,26 @@ +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 static org.assertj.core.api.AssertionsForClassTypes.assertThat; + +public class ConverterTestFactoryFieldsJUnit4UnitTest { + @Rule + public TestDataFieldsRule rule = new TestDataFieldsRule( + new TestDataLoader().addPath("testdata")); + + @TestData + private Document twoParagraphs; + + @TestData("twoParagraphs.txt") + private String twoParagraphsText; + + @Test + public void givenDocumentAndPlaintextInFiles_whenConvertToText_thenMatches() { + assertThat(Converter.fromDocument(twoParagraphs)).isEqualTo(twoParagraphsText); + } +} diff --git a/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterTestFactoryFieldsJUnit5UnitTest.java b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterTestFactoryFieldsJUnit5UnitTest.java new file mode 100644 index 000000000000..d749ee4aafae --- /dev/null +++ b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/ConverterTestFactoryFieldsJUnit5UnitTest.java @@ -0,0 +1,29 @@ +package com.baeldung.testdatafactory; + +import org.junit.jupiter.api.Test; +import uk.org.webcompere.testgadgets.testdatafactory.TestData; +import uk.org.webcompere.testgadgets.testdatafactory.TestDataFactory; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; + +@TestDataFactory(path = "testdata") +class ConverterTestFactoryFieldsJUnit5UnitTest { + + @TestData + private Document twoParagraphs; + + @TestData("twoParagraphs.txt") + private String twoParagraphsText; + + @Test + void givenDocumentAndPlaintextInFiles_whenConvertToText_thenMatches() { + assertThat(Converter.fromDocument(twoParagraphs)).isEqualTo(twoParagraphsText); + } + + @Test + void givenInjectedFiles_whenConvertToText_thenMatches( + @TestData("twoParagraphs.json") Document twoParagraphs, + @TestData("twoParagraphs.txt") String twoParagraphsText) { + assertThat(Converter.fromDocument(twoParagraphs)).isEqualTo(twoParagraphsText); + } +} diff --git a/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/TestDataFactory.java b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/TestDataFactory.java new file mode 100644 index 000000000000..f580300fe0cb --- /dev/null +++ b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/TestDataFactory.java @@ -0,0 +1,32 @@ +package com.baeldung.testdatafactory; + +import static java.util.Arrays.asList; + +public class TestDataFactory { + + public static String twoParagraphs() { + return "Paragraph one starts here.\n" + + "Then paragraph two follows. It has two sentences."; + } + + public static Document twoParagraphsAsDocument() { + Paragraph paragraph1 = new Paragraph(); + paragraph1.setStyle(Paragraph.Style.NORMAL); + + Sentence sentence1 = new Sentence(); + sentence1.setTokens(asList("Paragraph", "one", "starts", "here.")); + paragraph1.setSentences(asList(sentence1)); + + Paragraph paragraph2 = new Paragraph(); + paragraph2.setStyle(Paragraph.Style.NORMAL); + Sentence sentence2 = new Sentence(); + sentence2.setTokens(asList("Then", "paragraph", "two", "follows.")); + Sentence sentence3 = new Sentence(); + sentence3.setTokens(asList("It", "has", "two", "sentences.")); + paragraph2.setSentences(asList(sentence2, sentence3)); + + Document document = new Document(); + document.setParagraphs(asList(paragraph1, paragraph2)); + return document; + } +} diff --git a/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/TestDataFilesFactory.java b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/TestDataFilesFactory.java new file mode 100644 index 000000000000..b6bf52eaeffb --- /dev/null +++ b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/TestDataFilesFactory.java @@ -0,0 +1,27 @@ +package com.baeldung.testdatafactory; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class TestDataFilesFactory { + public static String twoParagraphs() throws IOException { + Path path = Paths.get("src", "test", "resources", + "testdata", "twoParagraphs.txt"); + try (Stream file = Files.lines(path)) { + return file.collect(Collectors.joining("\n")); + } + } + + public static Document twoParagraphsAsDocument() throws IOException { + ObjectMapper objectMapper = new ObjectMapper(); + return objectMapper.readValue( + Paths.get("src", "test", "resources", + "testdata", "twoParagraphs.json").toFile(), Document.class); + } +} diff --git a/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/TwoParagraphsCollection.java b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/TwoParagraphsCollection.java new file mode 100644 index 000000000000..3dd001c5e1cb --- /dev/null +++ b/testing-modules/testing-libraries-3/src/test/java/com/baeldung/testdatafactory/TwoParagraphsCollection.java @@ -0,0 +1,13 @@ +package com.baeldung.testdatafactory; + +import uk.org.webcompere.testgadgets.testdatafactory.TestData; +import uk.org.webcompere.testgadgets.testdatafactory.TestDataCollection; + +@TestDataCollection +public interface TwoParagraphsCollection { + @TestData + Document twoParagraphs(); + + @TestData("twoParagraphs.txt") + String twoParagraphsText(); +} diff --git a/testing-modules/testing-libraries-3/src/test/resources/testdata/dickens/text.json b/testing-modules/testing-libraries-3/src/test/resources/testdata/dickens/text.json new file mode 100644 index 000000000000..9ff3768df450 --- /dev/null +++ b/testing-modules/testing-libraries-3/src/test/resources/testdata/dickens/text.json @@ -0,0 +1,39 @@ +{ + "paragraphs": [ + { + "style": "HEADING", + "sentences": [ + { + "tokens": [ + "A", + "Tale", + "of", + "Two", + "Cities" + ] + } + ] + }, + { + "style": "NORMAL", + "sentences": [ + { + "tokens": [ + "It", + "was", + "the", + "best", + "of", + "times,", + "it", + "was", + "the", + "worst", + "of", + "times." + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/testing-modules/testing-libraries-3/src/test/resources/testdata/dickens/text.md b/testing-modules/testing-libraries-3/src/test/resources/testdata/dickens/text.md new file mode 100644 index 000000000000..72ad1c8eef02 --- /dev/null +++ b/testing-modules/testing-libraries-3/src/test/resources/testdata/dickens/text.md @@ -0,0 +1,2 @@ +# A Tale of Two Cities +It was the best of times, it was the worst of times. \ No newline at end of file diff --git a/testing-modules/testing-libraries-3/src/test/resources/testdata/dickens/text.txt b/testing-modules/testing-libraries-3/src/test/resources/testdata/dickens/text.txt new file mode 100644 index 000000000000..927ca01668d1 --- /dev/null +++ b/testing-modules/testing-libraries-3/src/test/resources/testdata/dickens/text.txt @@ -0,0 +1,2 @@ +A Tale of Two Cities +It was the best of times, it was the worst of times. \ No newline at end of file diff --git a/testing-modules/testing-libraries-3/src/test/resources/testdata/shakespeare/text.json b/testing-modules/testing-libraries-3/src/test/resources/testdata/shakespeare/text.json new file mode 100644 index 000000000000..5508eae010e4 --- /dev/null +++ b/testing-modules/testing-libraries-3/src/test/resources/testdata/shakespeare/text.json @@ -0,0 +1,40 @@ +{ + "paragraphs": [ + { + "style": "HEADING", + "sentences": [ + { + "tokens": [ + "ACT", + "I" + ] + } + ] + }, + { + "style": "HEADING", + "sentences": [ + { + "tokens": [ + "PROLOGUE" + ] + } + ] + }, + { + "style": "NORMAL", + "sentences": [ + { + "tokens": [ + "Two", + "households,", + "both", + "alike", + "in", + "dignity," + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/testing-modules/testing-libraries-3/src/test/resources/testdata/shakespeare/text.md b/testing-modules/testing-libraries-3/src/test/resources/testdata/shakespeare/text.md new file mode 100644 index 000000000000..c8ae53619bf0 --- /dev/null +++ b/testing-modules/testing-libraries-3/src/test/resources/testdata/shakespeare/text.md @@ -0,0 +1,3 @@ +# ACT I +# PROLOGUE +Two households, both alike in dignity, \ No newline at end of file diff --git a/testing-modules/testing-libraries-3/src/test/resources/testdata/shakespeare/text.txt b/testing-modules/testing-libraries-3/src/test/resources/testdata/shakespeare/text.txt new file mode 100644 index 000000000000..15ee3a5d0e1b --- /dev/null +++ b/testing-modules/testing-libraries-3/src/test/resources/testdata/shakespeare/text.txt @@ -0,0 +1,3 @@ +ACT I +PROLOGUE +Two households, both alike in dignity, \ No newline at end of file diff --git a/testing-modules/testing-libraries-3/src/test/resources/testdata/twoParagraphs.json b/testing-modules/testing-libraries-3/src/test/resources/testdata/twoParagraphs.json new file mode 100644 index 000000000000..a4fcadd0fe07 --- /dev/null +++ b/testing-modules/testing-libraries-3/src/test/resources/testdata/twoParagraphs.json @@ -0,0 +1,38 @@ +{ + "paragraphs": [ + { + "style": "NORMAL", + "sentences": [ + { + "tokens": [ + "Paragraph", + "one", + "starts", + "here." + ] + } + ] + }, + { + "style": "NORMAL", + "sentences": [ + { + "tokens": [ + "Then", + "paragraph", + "two", + "follows." + ] + }, + { + "tokens": [ + "It", + "has", + "two", + "sentences." + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/testing-modules/testing-libraries-3/src/test/resources/testdata/twoParagraphs.txt b/testing-modules/testing-libraries-3/src/test/resources/testdata/twoParagraphs.txt new file mode 100644 index 000000000000..51ece7d74bc9 --- /dev/null +++ b/testing-modules/testing-libraries-3/src/test/resources/testdata/twoParagraphs.txt @@ -0,0 +1,2 @@ +Paragraph one starts here. +Then paragraph two follows. It has two sentences. \ No newline at end of file