Skip to content

Commit f1abd1f

Browse files
committed
Add additional unit tests
1 parent ca82aec commit f1abd1f

File tree

1 file changed

+231
-0
lines changed

1 file changed

+231
-0
lines changed

src/test/java/nl/goodbytes/util/linkdetector/LinkDetectorTest.java

Lines changed: 231 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,4 +287,235 @@ public void testEmbeddedLinkFollowedByComma() throws Exception
287287
assertEquals(", bar", fragments.get(2).toString());
288288
assertFalse(fragments.get(2).isLink());
289289
}
290+
291+
@Test
292+
public void testMultipleLinksInLongerText() throws Exception
293+
{
294+
// Setup test fixture.
295+
final String input = "Please visit https://www.example.org and https://example.com at your convenience.";
296+
Fragment fragmentUnderTest;
297+
298+
// Execute system under test.
299+
final List<Fragment> fragments = LinkDetector.parse(input);
300+
301+
// Verify results.
302+
assertEquals(5, fragments.size());
303+
304+
fragmentUnderTest = fragments.get(0);
305+
assertEquals(0, fragmentUnderTest.startIndex());
306+
assertEquals("Please visit ".length(), fragmentUnderTest.endIndex());
307+
assertEquals("Please visit ", fragmentUnderTest.toString());
308+
assertFalse(fragmentUnderTest.isLink());
309+
310+
fragmentUnderTest = fragments.get(1);
311+
assertEquals("Please visit ".length(), fragmentUnderTest.startIndex());
312+
assertEquals("Please visit https://www.example.org".length(), fragmentUnderTest.endIndex());
313+
assertEquals("https://www.example.org", fragmentUnderTest.toString());
314+
assertTrue(fragmentUnderTest.isLink());
315+
316+
fragmentUnderTest = fragments.get(2);
317+
assertEquals("Please visit https://www.example.org".length(), fragmentUnderTest.startIndex());
318+
assertEquals("Please visit https://www.example.org and ".length(), fragmentUnderTest.endIndex());
319+
assertEquals(" and ", fragmentUnderTest.toString());
320+
assertFalse(fragmentUnderTest.isLink());
321+
322+
fragmentUnderTest = fragments.get(3);
323+
assertEquals("Please visit https://www.example.org and ".length(), fragmentUnderTest.startIndex());
324+
assertEquals("Please visit https://www.example.org and https://example.com".length(), fragmentUnderTest.endIndex());
325+
assertEquals("https://example.com", fragmentUnderTest.toString());
326+
assertTrue(fragmentUnderTest.isLink());
327+
328+
fragmentUnderTest = fragments.get(4);
329+
assertEquals("Please visit https://www.example.org and https://example.com".length(), fragmentUnderTest.startIndex());
330+
assertEquals("Please visit https://www.example.org and https://example.com at your convenience.".length(), fragmentUnderTest.endIndex());
331+
assertEquals(" at your convenience.", fragmentUnderTest.toString());
332+
assertFalse(fragmentUnderTest.isLink());
333+
}
334+
335+
@Test
336+
public void testLinkWithQueryString() throws Exception
337+
{
338+
// Setup test fixture.
339+
final String input = "https://www.example.org?foo=bar";
340+
341+
// Execute system under test.
342+
final List<Fragment> fragments = LinkDetector.parse(input);
343+
344+
// Verify results.
345+
assertEquals(1, fragments.size());
346+
assertEquals(0, fragments.get(0).startIndex());
347+
assertEquals(input.length(), fragments.get(0).endIndex());
348+
assertEquals(input, fragments.get(0).toString());
349+
assertTrue(fragments.get(0).isLink());
350+
}
351+
352+
@Test
353+
public void testLinkWithQueryStringWithExtraParams() throws Exception
354+
{
355+
// Setup test fixture.
356+
final String input = "https://www.example.org?foo=bar&baz=qux&a=3&b=_a";
357+
358+
// Execute system under test.
359+
final List<Fragment> fragments = LinkDetector.parse(input);
360+
361+
// Verify results.
362+
assertEquals(1, fragments.size());
363+
assertEquals(0, fragments.get(0).startIndex());
364+
assertEquals(input.length(), fragments.get(0).endIndex());
365+
assertEquals(input, fragments.get(0).toString());
366+
assertTrue(fragments.get(0).isLink());
367+
}
368+
369+
@Test
370+
public void testFtpLink() throws Exception
371+
{
372+
// Setup test fixture.
373+
final String input = "ftp://www.example.org";
374+
375+
// Execute system under test.
376+
final List<Fragment> fragments = LinkDetector.parse(input);
377+
378+
// Verify results.
379+
assertEquals(1, fragments.size());
380+
assertEquals(0, fragments.get(0).startIndex());
381+
assertEquals(input.length(), fragments.get(0).endIndex());
382+
assertEquals(input, fragments.get(0).toString());
383+
assertTrue(fragments.get(0).isLink());
384+
}
385+
386+
@Test
387+
public void testLinkWithBasicAuthentication() throws Exception
388+
{
389+
// Setup test fixture.
390+
final String input = "https://foo:bar@www.example.org";
391+
392+
// Execute system under test.
393+
final List<Fragment> fragments = LinkDetector.parse(input);
394+
395+
// Verify results.
396+
assertEquals(1, fragments.size());
397+
assertEquals(0, fragments.get(0).startIndex());
398+
assertEquals(input.length(), fragments.get(0).endIndex());
399+
assertEquals(input, fragments.get(0).toString());
400+
assertTrue(fragments.get(0).isLink());
401+
}
402+
403+
@Test
404+
public void testLinkWithPort() throws Exception
405+
{
406+
// Setup test fixture.
407+
final String input = "https://www.example.org:8080";
408+
409+
// Execute system under test.
410+
final List<Fragment> fragments = LinkDetector.parse(input);
411+
412+
// Verify results.
413+
assertEquals(1, fragments.size());
414+
assertEquals(0, fragments.get(0).startIndex());
415+
assertEquals(input.length(), fragments.get(0).endIndex());
416+
assertEquals(input, fragments.get(0).toString());
417+
assertTrue(fragments.get(0).isLink());
418+
}
419+
420+
@Test
421+
public void testLinkWithFragment() throws Exception
422+
{
423+
// Setup test fixture.
424+
final String input = "https://www.example.org#fragment";
425+
426+
// Execute system under test.
427+
final List<Fragment> fragments = LinkDetector.parse(input);
428+
429+
// Verify results.
430+
assertEquals(1, fragments.size());
431+
assertEquals(0, fragments.get(0).startIndex());
432+
assertEquals(input.length(), fragments.get(0).endIndex());
433+
assertEquals(input, fragments.get(0).toString());
434+
assertTrue(fragments.get(0).isLink());
435+
}
436+
437+
@Test
438+
public void testLinkWithFileExtension() throws Exception
439+
{
440+
// Setup test fixture.
441+
final String input = "https://www.example.org/file.html";
442+
443+
// Execute system under test.
444+
final List<Fragment> fragments = LinkDetector.parse(input);
445+
446+
// Verify results.
447+
assertEquals(1, fragments.size());
448+
assertEquals(0, fragments.get(0).startIndex());
449+
assertEquals(input.length(), fragments.get(0).endIndex());
450+
assertEquals(input, fragments.get(0).toString());
451+
assertTrue(fragments.get(0).isLink());
452+
}
453+
454+
@Test
455+
public void testLinkWithLinkInQueryString() throws Exception
456+
{
457+
// Setup test fixture.
458+
final String input = "https://duckduckgo.com/?q=https://example.com";
459+
460+
// Execute system under test.
461+
final List<Fragment> fragments = LinkDetector.parse(input);
462+
463+
// Verify results.
464+
assertEquals(1, fragments.size());
465+
assertEquals(0, fragments.get(0).startIndex());
466+
assertEquals(input.length(), fragments.get(0).endIndex());
467+
assertEquals(input, fragments.get(0).toString());
468+
assertTrue(fragments.get(0).isLink());
469+
}
470+
471+
@Test
472+
public void testLinkWithIpAddress() throws Exception
473+
{
474+
// Setup test fixture.
475+
final String input = "http://127.0.0.1/local/";
476+
477+
// Execute system under test.
478+
final List<Fragment> fragments = LinkDetector.parse(input);
479+
480+
// Verify results.
481+
assertEquals(1, fragments.size());
482+
assertEquals(0, fragments.get(0).startIndex());
483+
assertEquals(input.length(), fragments.get(0).endIndex());
484+
assertEquals(input, fragments.get(0).toString());
485+
assertTrue(fragments.get(0).isLink());
486+
}
487+
488+
@Test
489+
public void testObfuscatedLink() throws Exception
490+
{
491+
// Setup test fixture.
492+
final String input = "https://e%78a%6Dpl%65.com";
493+
494+
// Execute system under test.
495+
final List<Fragment> fragments = LinkDetector.parse(input);
496+
497+
// Verify results.
498+
assertEquals(1, fragments.size());
499+
assertEquals(0, fragments.get(0).startIndex());
500+
assertEquals(input.length(), fragments.get(0).endIndex());
501+
assertEquals(input, fragments.get(0).toString());
502+
assertTrue(fragments.get(0).isLink());
503+
}
504+
505+
@Test
506+
public void testTextWithLinkCharacters() throws Exception
507+
{
508+
// Setup test fixture.
509+
final String input = "A hyperlink begins with https:// and is followed by a domain, such as example.com";
510+
511+
// Execute system under test.
512+
final List<Fragment> fragments = LinkDetector.parse(input);
513+
514+
// Verify results.
515+
assertEquals(1, fragments.size());
516+
assertEquals(0, fragments.get(0).startIndex());
517+
assertEquals(input.length(), fragments.get(0).endIndex());
518+
assertEquals(input, fragments.get(0).toString());
519+
assertFalse(fragments.get(0).isLink());
520+
}
290521
}

0 commit comments

Comments
 (0)