X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2FMatchers.java;h=9bd4cbb6820af8ded8da88d169847c4f2c9cfbab;hb=22d68072fb1770cdc4262ede974bd0a6202d7062;hp=c08ffb1426df120afe348304462eec695e8d19bf;hpb=c54ff0e71fd2e97202ab800b9d3b6e35478f819b;p=Sone.git diff --git a/src/test/java/net/pterodactylus/sone/Matchers.java b/src/test/java/net/pterodactylus/sone/Matchers.java index c08ffb1..9bd4cbb 100644 --- a/src/test/java/net/pterodactylus/sone/Matchers.java +++ b/src/test/java/net/pterodactylus/sone/Matchers.java @@ -17,13 +17,19 @@ package net.pterodactylus.sone; +import static com.google.common.base.Objects.equal; +import static com.google.common.collect.Iterators.size; import static java.util.Arrays.asList; import static java.util.regex.Pattern.compile; +import java.io.IOException; +import java.io.InputStream; import java.util.Collection; import java.util.Iterator; import java.util.List; +import freenet.support.SimpleFieldSet; + import com.google.common.base.Objects; import com.google.common.collect.Lists; import org.hamcrest.Description; @@ -112,4 +118,65 @@ public class Matchers { }; } + public static Matcher delivers(final byte[] data) { + return new TypeSafeMatcher() { + byte[] readData = new byte[data.length]; + + @Override + protected boolean matchesSafely(InputStream inputStream) { + int offset = 0; + try { + while (true) { + int r = inputStream.read(); + if (r == -1) { + return offset == data.length; + } + if (offset == data.length) { + return false; + } + if (data[offset] != (readData[offset] = (byte) r)) { + return false; + } + offset++; + } + } catch (IOException ioe1) { + return false; + } + } + + @Override + public void describeTo(Description description) { + description.appendValue(data); + } + + @Override + protected void describeMismatchSafely(InputStream item, Description mismatchDescription) { + mismatchDescription.appendValue(readData); + } + }; + } + + public static Matcher matches(final SimpleFieldSet fieldSetToMatch) { + return new TypeSafeMatcher() { + @Override + protected boolean matchesSafely(SimpleFieldSet fieldSet) { + if (size(fieldSet.keyIterator()) != size(fieldSetToMatch.keyIterator())) { + return false; + } + for (Iterator keys = fieldSetToMatch.keyIterator(); keys.hasNext(); ) { + String key = keys.next(); + if (!equal(fieldSet.get(key), fieldSetToMatch.get(key))) { + return false; + } + } + return true; + } + + @Override + public void describeTo(Description description) { + description.appendText("is ").appendValue(fieldSetToMatch); + } + }; + } + }