From d27e96e600085cee3230f70884d646a004915318 Mon Sep 17 00:00:00 2001 From: Daniel Date: Fri, 17 Mar 2017 11:39:59 +1100 Subject: [PATCH] Fix EmptyCharSequence returning 'INSTANCE' as it's toString representation --- .../largetext/sequence/EmptyCharSequence.java | 5 ++ .../sequence/EmptyCharSequenceTest.java | 49 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 src/test/java/com/github/fge/largetext/sequence/EmptyCharSequenceTest.java diff --git a/src/main/java/com/github/fge/largetext/sequence/EmptyCharSequence.java b/src/main/java/com/github/fge/largetext/sequence/EmptyCharSequence.java index 176e36f..a2507a8 100644 --- a/src/main/java/com/github/fge/largetext/sequence/EmptyCharSequence.java +++ b/src/main/java/com/github/fge/largetext/sequence/EmptyCharSequence.java @@ -51,4 +51,9 @@ public CharSequence subSequence(final int start, final int end) return this; } + @Override + public String toString() + { + return ""; + } } diff --git a/src/test/java/com/github/fge/largetext/sequence/EmptyCharSequenceTest.java b/src/test/java/com/github/fge/largetext/sequence/EmptyCharSequenceTest.java new file mode 100644 index 0000000..f7f9379 --- /dev/null +++ b/src/test/java/com/github/fge/largetext/sequence/EmptyCharSequenceTest.java @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2003 - 2017 Tyro Payments Limited. + * Lv1, 155 Clarence St, Sydney NSW 2000. + * All rights reserved. + */ +package com.github.fge.largetext.sequence; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.io.File; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.testng.annotations.Test; + +import com.github.fge.largetext.LargeText; +import com.github.fge.largetext.LargeTextFactory; + +public final class EmptyCharSequenceTest { + + @Test + public void testEmptyRegexMatchReturnsAnEmptyString() throws IOException + { + Pattern simpleEmptyCharsetPattern = Pattern.compile("'(.*?)'"); + String stringToTest = "here is some text '' will be an empty regex match"; + File temp = File.createTempFile("file-with-contents-that-match-empty-charset-regex", ".tmp"); + try (PrintWriter out = new PrintWriter(temp)) + { + out.println(stringToTest); + } + + final LargeTextFactory factory = LargeTextFactory.defaultFactory(); + + try (LargeText largeText = factory.load(temp.toPath())) + { + final Matcher largeTextMatcher = simpleEmptyCharsetPattern.matcher(largeText); + while (largeTextMatcher.find()) + { + String emptyRegexMatch = largeTextMatcher.group(1); + System.out.println("emptyRegexMatch = " + emptyRegexMatch); + assertThat(emptyRegexMatch).isEqualTo("").overridingErrorMessage("LargeText did not return empty string: %s", emptyRegexMatch); + } + } + + temp.delete(); + } +}