Fix incorrect comparison
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Mon, 27 Sep 2021 12:34:26 +0000 (14:34 +0200)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Mon, 27 Sep 2021 12:34:26 +0000 (14:34 +0200)
The result of Object.equals(Object) will _always_ be non-null because a
primitive is always non-null. So once we use the correct method to check
the result of the equals call everything will be fine.

src/main/java/net/pterodactylus/sone/data/impl/ImageImpl.java
src/test/kotlin/net/pterodactylus/sone/data/impl/ImageImplTest.kt

index 0dd84fe..9446cec 100644 (file)
@@ -95,7 +95,7 @@ public class ImageImpl implements Image {
        @Override
        public Image setAlbum(Album album) {
                checkNotNull(album, "album must not be null");
-               checkNotNull(album.getSone().equals(getSone()), "album must belong to the same Sone as this image");
+               checkState(album.getSone().equals(getSone()), "album must belong to the same Sone as this image");
                this.album = album;
                return this;
        }
index 022bde0..e1551e1 100644 (file)
@@ -15,4 +15,13 @@ class ImageImplTest {
         image.modify().setTitle("").update()
     }
 
+    @Test(expected = IllegalStateException::class)
+    fun `album cannot be changed to album of different Sone`() {
+        val sone1 = IdOnlySone("Sone1")
+        val sone2 = IdOnlySone("Sone2")
+        image.modify().setSone(sone1).update()
+        val album = AlbumImpl(sone2)
+        image.album = album
+     }
+
 }