♻️ Supply default implementation for predicate
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / notify / Testing.kt
1 package net.pterodactylus.sone.notify
2
3 import net.pterodactylus.sone.data.Post
4 import net.pterodactylus.sone.data.PostReply
5 import net.pterodactylus.sone.data.Sone
6 import java.util.function.Predicate
7
8 fun matchThisPost(post: Post) = createPostVisibilityFilter { _, p -> p == post }
9 val showAllPosts = createPostVisibilityFilter { _, _ -> true }
10 val showNoPosts = createPostVisibilityFilter { _, _ -> false }
11
12 private fun createPostVisibilityFilter(visible: (Sone?, Post) -> Boolean) = object : PostVisibilityFilter {
13         override fun isPostVisible(sone: Sone?, post: Post) = visible(sone, post)
14 }
15
16 fun matchThisReply(reply: PostReply) = createReplyVisibilityFilter(showAllPosts) { _, r -> r == reply }
17 val showAllReplies = createReplyVisibilityFilter(showAllPosts) { _, _ -> true }
18 val showNoReplies = createReplyVisibilityFilter(showAllPosts) { _, _ -> false }
19
20 private fun createReplyVisibilityFilter(postVisibilityFilter: PostVisibilityFilter, visible: (Sone?, PostReply) -> Boolean): ReplyVisibilityFilter = object : DefaultReplyVisibilityFilter(postVisibilityFilter) {
21         override fun isReplyVisible(sone: Sone?, reply: PostReply) = visible(sone, reply)
22 }