From: David ‘Bombe’ Roden Date: Mon, 6 Jan 2025 08:21:05 +0000 (+0100) Subject: 🚸 Add InputStream matcher for byte arrays X-Git-Url: https://git.pterodactylus.net/?a=commitdiff_plain;h=986dd0d8152db805e57c9dad8ce5388dede0db4d;p=jFCPlib.git 🚸 Add InputStream matcher for byte arrays --- diff --git a/src/test/java/net/pterodactylus/fcp/test/InputStreamMatchers.java b/src/test/java/net/pterodactylus/fcp/test/InputStreamMatchers.java index 3e47a0b..7507799 100644 --- a/src/test/java/net/pterodactylus/fcp/test/InputStreamMatchers.java +++ b/src/test/java/net/pterodactylus/fcp/test/InputStreamMatchers.java @@ -40,4 +40,35 @@ public class InputStreamMatchers { }; } + public static Matcher equalTo(byte... content) { + return new TypeSafeDiagnosingMatcher() { + @Override + protected boolean matchesSafely(InputStream inputStream, Description mismatchDescription) { + try { + for (int index = 0; index < content.length; index++) { + int readByte = inputStream.read(); + if ((readByte == -1) || ((byte) readByte != content[index])) { + mismatchDescription.appendText("was ").appendValue(readByte).appendText(" at offset ").appendValue(index); + return false; + } + } + int eof = inputStream.read(); + if (eof != -1) { + mismatchDescription.appendText("contained more than ").appendValue(content.length).appendText(" bytes"); + return false; + } + } catch (IOException e) { + mismatchDescription.appendText("could not be read (").appendValue(e).appendText(")"); + return false; + } + return true; + } + + @Override + public void describeTo(Description description) { + description.appendText("is input stream containing ").appendValue(content); + } + }; + } + }