outputQueue = new ArrayBlockingQueue<>(100);
+ SequentialOutputBuffer sut = SequentialOutputBuffer.create(1, outputQueue);
+
+ // ACT
+ // Out of order inputs
+ sut.put(new OrderedLinkifyObject(1, ""));
+ sut.put(new OrderedLinkifyObject(2, ""));
+ sut.put(new OrderedLinkifyObject(3, ""));
+ //skip 4
+ sut.put(new OrderedLinkifyObject(5, ""));
+
+ // ASSERT
+ assertEquals("Output should be in order.", outputQueue.poll().getSequenceNumber(), 1);
+ assertEquals("Output should be in order.", outputQueue.poll().getSequenceNumber(), 2);
+ assertEquals("Output should be in order.", outputQueue.poll().getSequenceNumber(), 3);
+ assertTrue("outputQueue should be empty.", outputQueue.isEmpty());
+ }
+
+}
\ No newline at end of file
diff --git a/src/test/java/sy/andrew/linkifier/util/OLOLinkifierTest.java b/src/test/java/sy/andrew/linkifier/util/OLOLinkifierTest.java
new file mode 100644
index 0000000..76490e1
--- /dev/null
+++ b/src/test/java/sy/andrew/linkifier/util/OLOLinkifierTest.java
@@ -0,0 +1,33 @@
+package sy.andrew.linkifier.util;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+import sy.andrew.linkifier.model.OrderedLinkifyObject;
+
+public class OLOLinkifierTest {
+
+ @Test
+ public void testLinkify() {
+ //ARRANGE
+ final OLOLinkifier sut = new OLOLinkifier();
+
+ final String stringToLinkify = "http://boo";
+
+ final OrderedLinkifyObject inputOlo = new OrderedLinkifyObject(2, stringToLinkify);
+
+ //expectedOutput
+ final OrderedLinkifyObject expectedOutput = new OrderedLinkifyObject(2, "http://boo");
+ final String linkifiedString = new StringLinkifier().linkify(stringToLinkify);
+ expectedOutput.setLinkifiedString(linkifiedString);
+
+ //ACT
+ OrderedLinkifyObject actualOutput = sut.linkify(inputOlo);
+
+ //ASSERT
+ assertEquals("After linkifying, ", actualOutput, expectedOutput);
+
+ }
+
+}
diff --git a/src/test/java/sy/andrew/linkifier/LinkifierTest.java b/src/test/java/sy/andrew/linkifier/util/StringLinkifierTest.java
similarity index 78%
rename from src/test/java/sy/andrew/linkifier/LinkifierTest.java
rename to src/test/java/sy/andrew/linkifier/util/StringLinkifierTest.java
index 5c41f5f..6a3c5c3 100644
--- a/src/test/java/sy/andrew/linkifier/LinkifierTest.java
+++ b/src/test/java/sy/andrew/linkifier/util/StringLinkifierTest.java
@@ -1,20 +1,22 @@
-package sy.andrew.linkifier;
+package sy.andrew.linkifier.util;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
-public class LinkifierTest {
+import sy.andrew.linkifier.util.StringLinkifier;
+
+public class StringLinkifierTest {
@Test
public final void whenInputTextIsNull_outputIsEmptyString() {
- final String output = new Linkifier().linkify(null);
+ final String output = new StringLinkifier().linkify(null);
assertEquals("Given null input, result should be empty string", "", output);
}
@Test
public final void whenInputIsEmptyString_outputIsEmptyString() {
- final String output = new Linkifier().linkify("");
+ final String output = new StringLinkifier().linkify("");
assertEquals("Given empty string input, result should be empty string", "", output);
}
@@ -22,7 +24,7 @@ public final void whenInputIsEmptyString_outputIsEmptyString() {
public final void whenInputHasNoUrlNorTags_outputIsSameAsInput() {
final String inputText = "##hi there bob! ";
final String expectedOutput = inputText;
- final String output = new Linkifier().linkify(inputText);
+ final String output = new StringLinkifier().linkify(inputText);
assertEquals("inputText=[" + inputText + "]", expectedOutput, output);
}
@@ -30,7 +32,7 @@ public final void whenInputHasNoUrlNorTags_outputIsSameAsInput() {
public final void whenInputHasSchemeHttp_outputIsLinkified() {
final String inputText = "http://boo";
final String expectedOutput = "boo";
- final String output = new Linkifier().linkify(inputText);
+ final String output = new StringLinkifier().linkify(inputText);
assertEquals("inputText=[" + inputText + "]", expectedOutput, output);
}
@@ -38,7 +40,7 @@ public final void whenInputHasSchemeHttp_outputIsLinkified() {
public final void whenInputHasSchemeSecureHttps_outputIsLinkified() {
final String inputText = "https://boo";
final String expectedOutput = "boo";
- final String output = new Linkifier().linkify(inputText);
+ final String output = new StringLinkifier().linkify(inputText);
assertEquals("inputText=[" + inputText + "]", expectedOutput, output);
}
@@ -46,7 +48,7 @@ public final void whenInputHasSchemeSecureHttps_outputIsLinkified() {
public final void whenInputHasUnrecognizedSchemeFtp_outputIsSameAsInput() {
final String inputText = "ftp://boo";
final String expectedOutput = inputText;
- final String output = new Linkifier().linkify(inputText);
+ final String output = new StringLinkifier().linkify(inputText);
assertEquals("inputText=[" + inputText + "]", expectedOutput, output);
}
@@ -54,7 +56,7 @@ public final void whenInputHasUnrecognizedSchemeFtp_outputIsSameAsInput() {
public final void whenInputHasSchemeHttpWithoutBody_outputIsSameAsInput() {
final String inputText = "http://";
final String expectedOutput = inputText;
- final String output = new Linkifier().linkify(inputText);
+ final String output = new StringLinkifier().linkify(inputText);
assertEquals("inputText=[" + inputText + "]", expectedOutput, output);
}
@@ -62,7 +64,7 @@ public final void whenInputHasSchemeHttpWithoutBody_outputIsSameAsInput() {
public final void testLinkifyIsCaseInsensitive() {
final String inputText = "hTTPs://millenialmedia.COM";
final String expectedOutput = "millenialmedia.COM";
- final String output = new Linkifier().linkify(inputText);
+ final String output = new StringLinkifier().linkify(inputText);
assertEquals("inputText=[" + inputText + "]", expectedOutput, output);
}
@@ -70,7 +72,7 @@ public final void testLinkifyIsCaseInsensitive() {
public final void testHttpUrlWithQueryParams() {
final String inputText = "https://nih.gov/array/query?a=1&b=2";
final String expectedOutput = "nih.gov/array/query?a=1&b=2";
- final String output = new Linkifier().linkify(inputText);
+ final String output = new StringLinkifier().linkify(inputText);
assertEquals("inputText=[" + inputText + "]", expectedOutput, output);
}
@@ -78,7 +80,7 @@ public final void testHttpUrlWithQueryParams() {
public final void testHttpUrlWithHashAndParentheses() {
final String inputText = "http://docs.oracle.com/javase/6/docs/api/java/util/regex/Matcher.html#appendTail(java.lang.StringBuffer)";
final String expectedOutput = "docs.oracle.com/javase/6/docs/api/java/util/regex/Matcher.html#appendTail(java.lang.StringBuffer)";
- final String output = new Linkifier().linkify(inputText);
+ final String output = new StringLinkifier().linkify(inputText);
assertEquals("inputText=[" + inputText + "]", expectedOutput, output);
}
@@ -86,7 +88,7 @@ public final void testHttpUrlWithHashAndParentheses() {
public final void whenInputIsEmptyTag_outputIsSameAsInput() {
final String inputText = "<>< >";
final String expectedOutput = inputText;
- final String output = new Linkifier().linkify(inputText);
+ final String output = new StringLinkifier().linkify(inputText);
assertEquals("inputText=[" + inputText + "]", expectedOutput, output);
}
@@ -94,7 +96,7 @@ public final void whenInputIsEmptyTag_outputIsSameAsInput() {
public final void testNestedHtmlElements() {
final String inputText = "The Title";
final String expectedOutput = inputText;
- final String output = new Linkifier().linkify(inputText);
+ final String output = new StringLinkifier().linkify(inputText);
assertEquals("inputText=[" + inputText + "]", expectedOutput, output);
}
@@ -102,7 +104,7 @@ public final void testNestedHtmlElements() {
public final void testHttpSchemeInsideHtmlTag() {
final String inputText = "
";
final String expectedOutput = inputText;
- final String output = new Linkifier().linkify(inputText);
+ final String output = new StringLinkifier().linkify(inputText);
assertEquals("inputText=[" + inputText + "]", expectedOutput, output);
}
@@ -110,15 +112,15 @@ public final void testHttpSchemeInsideHtmlTag() {
public final void testMultipleHttpUrlsAndMultipleHtmlTags() {
final String inputText = "https://millenialmedia.com/boo http://amazon.com
";
final String expectedOutput = "";
- final String output = new Linkifier().linkify(inputText);
+ final String output = new StringLinkifier().linkify(inputText);
assertEquals("inputText=[" + inputText + "]", expectedOutput, output);
}
@Test
public final void testRelinkifyingIsIdempotent() {
final String inputText = "https://millenialmedia.com/boo http://amazon.com
";
- final String linkifiedText = new Linkifier().linkify(inputText);
- final String relinkifiedText = new Linkifier().linkify(linkifiedText);
+ final String linkifiedText = new StringLinkifier().linkify(inputText);
+ final String relinkifiedText = new StringLinkifier().linkify(linkifiedText);
assertEquals("relinkifiedText should equal linkifiedText", linkifiedText, relinkifiedText);
}
@@ -126,7 +128,7 @@ public final void testRelinkifyingIsIdempotent() {
public final void testRandomSpaces1() {
final String inputText = " \t
< link /> ";
final String expectedOutput = inputText;
- final String output = new Linkifier().linkify(inputText);
+ final String output = new StringLinkifier().linkify(inputText);
assertEquals("inputText=[" + inputText + "]", expectedOutput, output);
}
@@ -134,7 +136,7 @@ public final void testRandomSpaces1() {
public final void testRandomSpaces2() {
final String inputText = " http://foo/boo hi there \t mo&bo http://goo ";
final String expectedOutput = " foo/boo hi there \t mo&bo goo ";
- final String output = new Linkifier().linkify(inputText);
+ final String output = new StringLinkifier().linkify(inputText);
assertEquals("inputText=[" + inputText + "]", expectedOutput, output);
}
@@ -146,7 +148,7 @@ public final void testMultipleLineInput() {
final String expectedOutput = "\n" + " \n" + "";
- final String output = new Linkifier().linkify(inputText);
+ final String output = new StringLinkifier().linkify(inputText);
assertEquals("inputText=[" + inputText + "]", expectedOutput, output);
}
}