Merge branch 'release-0.9.6'
[Sone.git] / src / test / java / net / pterodactylus / sone / Matchers.java
index c73866e..823cdf9 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * 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
@@ -23,6 +23,7 @@ import java.io.IOException;
 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;
 
@@ -97,6 +98,10 @@ public class Matchers {
                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);
@@ -104,8 +109,7 @@ public class Matchers {
 
        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,
@@ -141,22 +145,6 @@ public class Matchers {
                                                        .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;
                        }
 
@@ -172,12 +160,68 @@ public class Matchers {
                                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);
                        }
                };
        }
@@ -249,6 +293,31 @@ public class Matchers {
 
        }
 
+       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> {