🐛 Fix exclusion in search command
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sun, 17 Mar 2019 12:20:50 +0000 (13:20 +0100)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sun, 17 Mar 2019 12:20:50 +0000 (13:20 +0100)
src/main/java/net/pterodactylus/xdcc/ui/stdin/SearchCommand.java
src/test/java/net/pterodactylus/xdcc/ui/stdin/SearchCommandTest.java [new file with mode: 0644]

index 746f01c..3b3afe8 100644 (file)
@@ -90,18 +90,18 @@ public class SearchCommand implements Command {
                return state.setLastResults(lastResult);
        }
 
                return state.setLastResults(lastResult);
        }
 
-       private static class SearchParameter {
+       static class SearchParameter {
 
                private final boolean exclude;
                private final Pattern pattern;
 
 
                private final boolean exclude;
                private final Pattern pattern;
 
-               private SearchParameter(boolean exclude, Pattern pattern) {
+               SearchParameter(boolean exclude, Pattern pattern) {
                        this.exclude = exclude;
                        this.pattern = pattern;
                }
 
                public boolean matches(String filename) {
                        this.exclude = exclude;
                        this.pattern = pattern;
                }
 
                public boolean matches(String filename) {
-                       return pattern.matcher(filename).find() && !exclude;
+                       return pattern.matcher(filename).find() == !exclude;
                }
 
                public static SearchParameter from(String parameter) {
                }
 
                public static SearchParameter from(String parameter) {
diff --git a/src/test/java/net/pterodactylus/xdcc/ui/stdin/SearchCommandTest.java b/src/test/java/net/pterodactylus/xdcc/ui/stdin/SearchCommandTest.java
new file mode 100644 (file)
index 0000000..5a8e393
--- /dev/null
@@ -0,0 +1,37 @@
+package net.pterodactylus.xdcc.ui.stdin;
+
+import static java.util.regex.Pattern.compile;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.equalTo;
+
+import net.pterodactylus.xdcc.ui.stdin.SearchCommand.SearchParameter;
+
+import org.junit.Test;
+
+public class SearchCommandTest {
+
+       @Test
+       public void searchParameterMatchesIfRegexMatchesAndExcludeIsFalse() {
+               SearchParameter searchParameter = new SearchParameter(false, compile("abc"));
+               assertThat(searchParameter.matches("test abctest"), equalTo(true));
+       }
+
+       @Test
+       public void searchParameterDoesNotMatchIfRegexDoesNotMatchAndExcludeIsFalse() {
+               SearchParameter searchParameter = new SearchParameter(false, compile("abc"));
+               assertThat(searchParameter.matches("test deftest"), equalTo(false));
+       }
+
+       @Test
+       public void searchParameterMatchesIfRegexDoesNotMatchAndExcludeIsTrue() {
+               SearchParameter searchParameter = new SearchParameter(true, compile("abc"));
+               assertThat(searchParameter.matches("test deftest"), equalTo(true));
+       }
+
+       @Test
+       public void searchParameterDoesNotMatchIfRegexMatchesAndExcludeIsTrue() {
+               SearchParameter searchParameter = new SearchParameter(true, compile("abc"));
+               assertThat(searchParameter.matches("test abctest"), equalTo(false));
+       }
+
+}