From 1c8e0751812a7e274f425d1e4a6f885d9e28587d Mon Sep 17 00:00:00 2001 From: Pinapelz Date: Wed, 13 Dec 2023 22:28:09 -0800 Subject: Add equality check to all custom Datatypes Signed-off-by: Pinapelz --- src/main/java/com/pinapelz/datatypes/Channel.java | 21 ++++++++ src/main/java/com/pinapelz/datatypes/Comment.java | 12 +++++ .../pinapelz/datatypes/CommentSearchResult.java | 10 ++++ .../java/com/pinapelz/datatypes/SimpleChannel.java | 15 ++++++ .../com/pinapelz/datatypes/SimpleCommentVideo.java | 18 +++++++ .../java/com/pinapelz/datatypes/SimpleVideo.java | 25 +++++++++ src/main/java/com/pinapelz/datatypes/Video.java | 18 +++++++ .../com/pinapelz/datatypes/VideoSearchResult.java | 10 ++++ src/test/java/ChannelQueryTest.java | 6 --- src/test/java/DataTypeTests.java | 63 ++++++++++++++++++++++ 10 files changed, 192 insertions(+), 6 deletions(-) create mode 100644 src/test/java/DataTypeTests.java diff --git a/src/main/java/com/pinapelz/datatypes/Channel.java b/src/main/java/com/pinapelz/datatypes/Channel.java index eabe812..f91bc8c 100644 --- a/src/main/java/com/pinapelz/datatypes/Channel.java +++ b/src/main/java/com/pinapelz/datatypes/Channel.java @@ -2,6 +2,8 @@ package com.pinapelz.datatypes; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import java.util.Objects; + /** * Channel object * @@ -21,4 +23,23 @@ public class Channel extends SimpleChannel{ public String published_at; public boolean inactive; public String description; + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if(obj == null || getClass() != obj.getClass()) return false; + Channel channel = (Channel) obj; + return Objects.equals(suborg, channel.suborg) && + Objects.equals(banner, channel.banner) && + Objects.equals(twitter, channel.twitter) && + Objects.equals(video_count, channel.video_count) && + Objects.equals(subscriber_count, channel.subscriber_count) && + Objects.equals(view_count, channel.view_count) && + Objects.equals(clip_count, channel.clip_count) && + Objects.equals(lang, channel.lang) && + Objects.equals(published_at, channel.published_at) && + inactive == channel.inactive && + Objects.equals(description, channel.description) && + super.equals(obj); + } } diff --git a/src/main/java/com/pinapelz/datatypes/Comment.java b/src/main/java/com/pinapelz/datatypes/Comment.java index b9bac76..207041a 100644 --- a/src/main/java/com/pinapelz/datatypes/Comment.java +++ b/src/main/java/com/pinapelz/datatypes/Comment.java @@ -1,5 +1,7 @@ package com.pinapelz.datatypes; +import java.util.Objects; + /** * Comment object * @@ -10,4 +12,14 @@ public class Comment { public String comment_key; public String video_id; public String message; + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if(obj == null || getClass() != obj.getClass()) return false; + Comment comment = (Comment) obj; + return Objects.equals(comment_key, comment.comment_key) && + Objects.equals(video_id, comment.video_id) && + Objects.equals(message, comment.message); + } } diff --git a/src/main/java/com/pinapelz/datatypes/CommentSearchResult.java b/src/main/java/com/pinapelz/datatypes/CommentSearchResult.java index 937166f..cf698ea 100644 --- a/src/main/java/com/pinapelz/datatypes/CommentSearchResult.java +++ b/src/main/java/com/pinapelz/datatypes/CommentSearchResult.java @@ -1,6 +1,7 @@ package com.pinapelz.datatypes; import java.util.List; +import java.util.Objects; /** * Result object for a paginated comment search @@ -11,4 +12,13 @@ import java.util.List; public class CommentSearchResult { public int total; public List items; + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if(obj == null || getClass() != obj.getClass()) return false; + CommentSearchResult commentSearchResult = (CommentSearchResult) obj; + return total == commentSearchResult.total && + Objects.equals(items, commentSearchResult.items); + } } diff --git a/src/main/java/com/pinapelz/datatypes/SimpleChannel.java b/src/main/java/com/pinapelz/datatypes/SimpleChannel.java index 1f91ced..4bce2e2 100644 --- a/src/main/java/com/pinapelz/datatypes/SimpleChannel.java +++ b/src/main/java/com/pinapelz/datatypes/SimpleChannel.java @@ -2,6 +2,8 @@ package com.pinapelz.datatypes; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import java.util.Objects; + /** * Simple channel object * @@ -16,4 +18,17 @@ public class SimpleChannel { public String type; public String photo; public String org; + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if(obj == null || getClass() != obj.getClass()) return false; + SimpleChannel simpleChannel = (SimpleChannel) obj; + return Objects.equals(id, simpleChannel.id) && + Objects.equals(name, simpleChannel.name) && + Objects.equals(english_name, simpleChannel.english_name) && + Objects.equals(type, simpleChannel.type) && + Objects.equals(photo, simpleChannel.photo) && + Objects.equals(org, simpleChannel.org); + } } diff --git a/src/main/java/com/pinapelz/datatypes/SimpleCommentVideo.java b/src/main/java/com/pinapelz/datatypes/SimpleCommentVideo.java index 574ac8b..d4004ef 100644 --- a/src/main/java/com/pinapelz/datatypes/SimpleCommentVideo.java +++ b/src/main/java/com/pinapelz/datatypes/SimpleCommentVideo.java @@ -1,6 +1,7 @@ package com.pinapelz.datatypes; import java.util.List; +import java.util.Objects; /** * The same as SimpleVideo, but with comments @@ -20,4 +21,21 @@ public class SimpleCommentVideo { public int songcount; public SimpleChannel channel; public List comments; + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if(obj == null || getClass() != obj.getClass()) return false; + SimpleCommentVideo simpleCommentVideo = (SimpleCommentVideo) obj; + return duration == simpleCommentVideo.duration && + songcount == simpleCommentVideo.songcount && + Objects.equals(id, simpleCommentVideo.id) && + Objects.equals(title, simpleCommentVideo.title) && + Objects.equals(type, simpleCommentVideo.type) && + Objects.equals(published_at, simpleCommentVideo.published_at) && + Objects.equals(available_at, simpleCommentVideo.available_at) && + Objects.equals(status, simpleCommentVideo.status) && + Objects.equals(channel, simpleCommentVideo.channel) && + Objects.equals(comments, simpleCommentVideo.comments); + } } diff --git a/src/main/java/com/pinapelz/datatypes/SimpleVideo.java b/src/main/java/com/pinapelz/datatypes/SimpleVideo.java index aad4dbd..b57b997 100644 --- a/src/main/java/com/pinapelz/datatypes/SimpleVideo.java +++ b/src/main/java/com/pinapelz/datatypes/SimpleVideo.java @@ -2,6 +2,8 @@ package com.pinapelz.datatypes; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import java.util.Objects; + /** * Simple video object * @@ -26,4 +28,27 @@ public class SimpleVideo { public int songcount; public String channel_id; public Channel channel; + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if(obj == null || getClass() != obj.getClass()) return false; + SimpleVideo simpleVideo = (SimpleVideo) obj; + return duration == simpleVideo.duration && + live_viewers == simpleVideo.live_viewers && + songcount == simpleVideo.songcount && + Objects.equals(id, simpleVideo.id) && + Objects.equals(title, simpleVideo.title) && + Objects.equals(type, simpleVideo.type) && + Objects.equals(topic_id, simpleVideo.topic_id) && + Objects.equals(published_at, simpleVideo.published_at) && + Objects.equals(available_at, simpleVideo.available_at) && + Objects.equals(status, simpleVideo.status) && + Objects.equals(start_scheduled, simpleVideo.start_scheduled) && + Objects.equals(start_actual, simpleVideo.start_actual) && + Objects.equals(end_actual, simpleVideo.end_actual) && + Objects.equals(description, simpleVideo.description) && + Objects.equals(channel_id, simpleVideo.channel_id) && + Objects.equals(channel, simpleVideo.channel); + } } diff --git a/src/main/java/com/pinapelz/datatypes/Video.java b/src/main/java/com/pinapelz/datatypes/Video.java index 45fee73..1f05305 100644 --- a/src/main/java/com/pinapelz/datatypes/Video.java +++ b/src/main/java/com/pinapelz/datatypes/Video.java @@ -4,6 +4,7 @@ package com.pinapelz.datatypes; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import java.util.List; +import java.util.Objects; /** * Video object @@ -21,6 +22,23 @@ public class Video extends SimpleVideo { public String thumbnail; public List