- private static class PostMatcher extends TypeSafeDiagnosingMatcher<Post> {
-
- private final String postId;
- private final long time;
- private final String text;
- private final Optional<String> recipient;
-
- private PostMatcher(String postId, long time, String text,
- Optional<String> recipient) {
- this.postId = postId;
- this.time = time;
- this.text = text;
- this.recipient = recipient;
- }
-
- @Override
- protected boolean matchesSafely(Post post,
- Description mismatchDescription) {
- if (!post.getId().equals(postId)) {
- mismatchDescription.appendText("ID is not ")
- .appendValue(postId);
- return false;
- }
- if (post.getTime() != time) {
- mismatchDescription.appendText("Time is not @")
- .appendValue(time);
- return false;
- }
- if (!post.getText().equals(text)) {
- mismatchDescription.appendText("Text is not ")
- .appendValue(text);
- return false;
- }
- if (recipient.isPresent()) {
- if (!post.getRecipientId().isPresent()) {
- mismatchDescription.appendText(
- "Recipient not present");
- return false;
- }
- if (!post.getRecipientId().get().equals(recipient.get())) {
- mismatchDescription.appendText("Recipient is not ")
- .appendValue(recipient.get());
- return false;
- }
- } else {
- if (post.getRecipientId().isPresent()) {
- mismatchDescription.appendText("Recipient is present");
- return false;
- }
- }
- return true;
- }
-
- @Override
- public void describeTo(Description description) {
- description.appendText("is post with ID ")
- .appendValue(postId);
- description.appendText(", created at @").appendValue(time);
- description.appendText(", text ").appendValue(text);
- if (recipient.isPresent()) {
- description.appendText(", directed at ")
- .appendValue(recipient.get());
- }
- }
-
- }
-
- 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);
- }
-
- }
-