X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2FMatchers.java;h=88732782cb3466bfc3fb3131077b8ca8df345bc4;hp=c08ffb1426df120afe348304462eec695e8d19bf;hb=8a6efbfb639dea6c707dfe26aafcb6c5029dda9a;hpb=1b9044499498acfd0f472a5a8ae353665a0fcd10 diff --git a/src/test/java/net/pterodactylus/sone/Matchers.java b/src/test/java/net/pterodactylus/sone/Matchers.java index c08ffb1..8873278 100644 --- a/src/test/java/net/pterodactylus/sone/Matchers.java +++ b/src/test/java/net/pterodactylus/sone/Matchers.java @@ -20,6 +20,8 @@ package net.pterodactylus.sone; 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; @@ -112,4 +114,42 @@ 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); + } + }; + } + }