/*
- * Sone - Matchers.java - Copyright © 2013 David Roden
+ * Sone - Matchers.java - Copyright © 2013–2016 David Roden
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
import java.io.InputStream;
import net.pterodactylus.sone.data.Album;
+import net.pterodactylus.sone.data.Image;
import net.pterodactylus.sone.data.Post;
import net.pterodactylus.sone.data.PostReply;
return new PostMatcher(postId, time, text, recipient);
}
+ public static Matcher<Post> isPostWithId(String postId) {
+ return new PostIdMatcher(postId);
+ }
+
public static Matcher<PostReply> isPostReply(String postReplyId,
String postId, long time, String text) {
return new PostReplyMatcher(postReplyId, postId, time, text);
public static Matcher<Album> isAlbum(final String albumId,
final String parentAlbumId,
- final String title, final String albumDescription,
- final String imageId) {
+ final String title, final String albumDescription) {
return new TypeSafeDiagnosingMatcher<Album>() {
@Override
protected boolean matchesSafely(Album album,
.appendValue(album.getDescription());
return false;
}
- if (imageId == null) {
- if (album.getAlbumImage() != null) {
- mismatchDescription.appendText("has album image");
- return false;
- }
- } else {
- if (album.getAlbumImage() == null) {
- mismatchDescription.appendText("has no album image");
- return false;
- }
- if (!album.getAlbumImage().getId().equals(imageId)) {
- mismatchDescription.appendText("has album image ")
- .appendValue(album.getAlbumImage().getId());
- return false;
- }
- }
return true;
}
description.appendText(", has title ").appendValue(title);
description.appendText(", has description ")
.appendValue(albumDescription);
- if (imageId == null) {
- description.appendText(", has no album image");
- } else {
- description.appendText(", has album image ")
- .appendValue(imageId);
+ }
+ };
+ }
+
+ public static Matcher<Image> isImage(final String id,
+ final long creationTime,
+ final String key, final String title,
+ final String imageDescription,
+ final int width, final int height) {
+ return new TypeSafeDiagnosingMatcher<Image>() {
+ @Override
+ protected boolean matchesSafely(Image image,
+ Description mismatchDescription) {
+ if (!image.getId().equals(id)) {
+ mismatchDescription.appendText("ID is ")
+ .appendValue(image.getId());
+ return false;
+ }
+ if (image.getCreationTime() != creationTime) {
+ mismatchDescription.appendText("created at @")
+ .appendValue(image.getCreationTime());
+ return false;
}
+ if (!image.getKey().equals(key)) {
+ mismatchDescription.appendText("key is ")
+ .appendValue(image.getKey());
+ return false;
+ }
+ if (!image.getTitle().equals(title)) {
+ mismatchDescription.appendText("title is ")
+ .appendValue(image.getTitle());
+ return false;
+ }
+ if (!image.getDescription().equals(imageDescription)) {
+ mismatchDescription.appendText("description is ")
+ .appendValue(image.getDescription());
+ return false;
+ }
+ if (image.getWidth() != width) {
+ mismatchDescription.appendText("width is ")
+ .appendValue(image.getWidth());
+ return false;
+ }
+ if (image.getHeight() != height) {
+ mismatchDescription.appendText("height is ")
+ .appendValue(image.getHeight());
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public void describeTo(Description description) {
+ description.appendText("image with ID ").appendValue(id);
+ description.appendText(", created at @")
+ .appendValue(creationTime);
+ description.appendText(", has key ").appendValue(key);
+ description.appendText(", has title ").appendValue(title);
+ description.appendText(", has description ")
+ .appendValue(imageDescription);
+ description.appendText(", has width ").appendValue(width);
+ description.appendText(", has height ").appendValue(height);
}
};
}
}
+ private static class PostIdMatcher extends TypeSafeDiagnosingMatcher<Post> {
+
+ private final String id;
+
+ private PostIdMatcher(String id) {
+ this.id = id;
+ }
+
+ @Override
+ protected boolean matchesSafely(Post item,
+ Description mismatchDescription) {
+ if (!item.getId().equals(id)) {
+ mismatchDescription.appendText("post has ID ").appendValue(item.getId());
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public void describeTo(Description description) {
+ description.appendText("post with ID ").appendValue(id);
+ }
+
+ }
+
private static class PostReplyMatcher
extends TypeSafeDiagnosingMatcher<PostReply> {