diff --git a/src/main/java/com/mpatric/mp3agic/AbstractID3v2Tag.java b/src/main/java/com/mpatric/mp3agic/AbstractID3v2Tag.java index 7e490b30..5d0d5398 100644 --- a/src/main/java/com/mpatric/mp3agic/AbstractID3v2Tag.java +++ b/src/main/java/com/mpatric/mp3agic/AbstractID3v2Tag.java @@ -394,7 +394,9 @@ public String getTrack() { @Override public void setTrack(String track) { - if (track != null && track.length() > 0) { + if (track == null || track.isEmpty()) { + clearFrameSet(ID_TRACK); + } else { invalidateDataLength(); ID3v2TextFrameData frameData = new ID3v2TextFrameData(useFrameUnsynchronisation(), new EncodedText(track)); addFrame(createFrame(ID_TRACK, frameData.toBytes()), true); @@ -410,7 +412,9 @@ public String getPartOfSet() { @Override public void setPartOfSet(String partOfSet) { - if (partOfSet != null && partOfSet.length() > 0) { + if (partOfSet == null || partOfSet.isEmpty()) { + clearFrameSet(ID_PART_OF_SET); + } else { invalidateDataLength(); ID3v2TextFrameData frameData = new ID3v2TextFrameData(useFrameUnsynchronisation(), new EncodedText(partOfSet)); addFrame(createFrame(ID_PART_OF_SET, frameData.toBytes()), true); @@ -441,7 +445,9 @@ public String getGrouping() { @Override public void setGrouping(String grouping) { - if (grouping != null && grouping.length() > 0) { + if (grouping == null || grouping.isEmpty()) { + clearFrameSet(ID_GROUPING); + } else { invalidateDataLength(); ID3v2TextFrameData frameData = new ID3v2TextFrameData(useFrameUnsynchronisation(), new EncodedText(grouping)); addFrame(createFrame(ID_GROUPING, frameData.toBytes()), true); @@ -457,7 +463,9 @@ public String getArtist() { @Override public void setArtist(String artist) { - if (artist != null && artist.length() > 0) { + if (artist == null || artist.isEmpty()) { + clearFrameSet(ID_ARTIST); + } else { invalidateDataLength(); ID3v2TextFrameData frameData = new ID3v2TextFrameData(useFrameUnsynchronisation(), new EncodedText(artist)); addFrame(createFrame(ID_ARTIST, frameData.toBytes()), true); @@ -473,7 +481,9 @@ public String getAlbumArtist() { @Override public void setAlbumArtist(String albumArtist) { - if (albumArtist != null && albumArtist.length() > 0) { + if (albumArtist == null || albumArtist.isEmpty()) { + clearFrameSet(ID_ALBUM_ARTIST); + } else { invalidateDataLength(); ID3v2TextFrameData frameData = new ID3v2TextFrameData(useFrameUnsynchronisation(), new EncodedText(albumArtist)); addFrame(createFrame(ID_ALBUM_ARTIST, frameData.toBytes()), true); @@ -489,7 +499,9 @@ public String getTitle() { @Override public void setTitle(String title) { - if (title != null && title.length() > 0) { + if (title == null || title.isEmpty()) { + clearFrameSet(ID_TITLE); + } else { invalidateDataLength(); ID3v2TextFrameData frameData = new ID3v2TextFrameData(useFrameUnsynchronisation(), new EncodedText(title)); addFrame(createFrame(ID_TITLE, frameData.toBytes()), true); @@ -505,7 +517,9 @@ public String getAlbum() { @Override public void setAlbum(String album) { - if (album != null && album.length() > 0) { + if (album == null || album.isEmpty()) { + clearFrameSet(ID_ALBUM); + } else { invalidateDataLength(); ID3v2TextFrameData frameData = new ID3v2TextFrameData(useFrameUnsynchronisation(), new EncodedText(album)); addFrame(createFrame(ID_ALBUM, frameData.toBytes()), true); @@ -521,7 +535,9 @@ public String getYear() { @Override public void setYear(String year) { - if (year != null && year.length() > 0) { + if (year == null || year.isEmpty()) { + clearFrameSet(ID_YEAR); + } else { invalidateDataLength(); ID3v2TextFrameData frameData = new ID3v2TextFrameData(useFrameUnsynchronisation(), new EncodedText(year)); addFrame(createFrame(ID_YEAR, frameData.toBytes()), true); @@ -537,7 +553,9 @@ public String getDate() { @Override public void setDate(String date) { - if (date != null && date.length() > 0) { + if (date == null || date.isEmpty()) { + clearFrameSet(ID_DATE); + } else { invalidateDataLength(); ID3v2TextFrameData frameData = new ID3v2TextFrameData(useFrameUnsynchronisation(), new EncodedText(date)); addFrame(createFrame(ID_DATE, frameData.toBytes()), true); @@ -613,7 +631,9 @@ public String getKey() { @Override public void setKey(String key) { - if (key != null && key.length() > 0) { + if (key == null || key.isEmpty()) { + clearFrameSet(ID_KEY); + } else { invalidateDataLength(); ID3v2TextFrameData frameData = new ID3v2TextFrameData(useFrameUnsynchronisation(), new EncodedText(key)); addFrame(createFrame(ID_KEY, frameData.toBytes()), true); @@ -687,7 +707,9 @@ public String getComment() { @Override public void setComment(String comment) { - if (comment != null && comment.length() > 0) { + if (comment == null || comment.isEmpty()) { + clearFrameSet(ID_COMMENT); + } else { invalidateDataLength(); ID3v2CommentFrameData frameData = new ID3v2CommentFrameData(useFrameUnsynchronisation(), "eng", null, new EncodedText(comment)); addFrame(createFrame(ID_COMMENT, frameData.toBytes()), true); @@ -703,7 +725,9 @@ public String getItunesComment() { @Override public void setItunesComment(String itunesComment) { - if (itunesComment != null && itunesComment.length() > 0) { + if (itunesComment == null || itunesComment.isEmpty()) { + clearFrameSet(ID_COMMENT); + } else { invalidateDataLength(); ID3v2CommentFrameData frameData = new ID3v2CommentFrameData(useFrameUnsynchronisation(), "eng", new EncodedText(ITUNES_COMMENT_DESCRIPTION), new EncodedText(itunesComment)); addFrame(createFrame(ID_COMMENT, frameData.toBytes()), true); @@ -742,7 +766,9 @@ public String getLyrics() { @Override public void setLyrics(String lyrics) { - if (lyrics != null && lyrics.length() > 0) { + if (lyrics == null || lyrics.isEmpty()) { + clearFrameSet(ID_TEXT_LYRICS); + } else { invalidateDataLength(); ID3v2CommentFrameData frameData = new ID3v2CommentFrameData(useFrameUnsynchronisation(), "eng", null, new EncodedText(lyrics)); addFrame(createFrame(ID_TEXT_LYRICS, frameData.toBytes()), true); @@ -758,7 +784,9 @@ public String getComposer() { @Override public void setComposer(String composer) { - if (composer != null && composer.length() > 0) { + if (composer == null || composer.isEmpty()) { + clearFrameSet(ID_COMPOSER); + } else { invalidateDataLength(); ID3v2TextFrameData frameData = new ID3v2TextFrameData(useFrameUnsynchronisation(), new EncodedText(composer)); addFrame(createFrame(ID_COMPOSER, frameData.toBytes()), true); @@ -774,7 +802,9 @@ public String getPublisher() { @Override public void setPublisher(String publisher) { - if (publisher != null && publisher.length() > 0) { + if (publisher == null || publisher.isEmpty()) { + clearFrameSet(ID_PUBLISHER); + } else { invalidateDataLength(); ID3v2TextFrameData frameData = new ID3v2TextFrameData(useFrameUnsynchronisation(), new EncodedText(publisher)); addFrame(createFrame(ID_PUBLISHER, frameData.toBytes()), true); @@ -790,7 +820,9 @@ public String getOriginalArtist() { @Override public void setOriginalArtist(String originalArtist) { - if (originalArtist != null && originalArtist.length() > 0) { + if (originalArtist == null || originalArtist.isEmpty()) { + clearFrameSet(ID_ORIGINAL_ARTIST); + } else { invalidateDataLength(); ID3v2TextFrameData frameData = new ID3v2TextFrameData(useFrameUnsynchronisation(), new EncodedText(originalArtist)); addFrame(createFrame(ID_ORIGINAL_ARTIST, frameData.toBytes()), true); @@ -806,7 +838,9 @@ public String getCopyright() { @Override public void setCopyright(String copyright) { - if (copyright != null && copyright.length() > 0) { + if (copyright == null || copyright.isEmpty()) { + clearFrameSet(ID_COPYRIGHT); + } else { invalidateDataLength(); ID3v2TextFrameData frameData = new ID3v2TextFrameData(useFrameUnsynchronisation(), new EncodedText(copyright)); addFrame(createFrame(ID_COPYRIGHT, frameData.toBytes()), true); @@ -822,7 +856,9 @@ public String getArtistUrl() { @Override public void setArtistUrl(String url) { - if (url != null && url.length() > 0) { + if (url == null || url.isEmpty()) { + clearFrameSet(ID_ARTIST_URL); + } else { invalidateDataLength(); ID3v2WWWFrameData frameData = new ID3v2WWWFrameData(useFrameUnsynchronisation(), url); addFrame(createFrame(ID_ARTIST_URL, frameData.toBytes()), true); @@ -838,7 +874,9 @@ public String getCommercialUrl() { @Override public void setCommercialUrl(String url) { - if (url != null && url.length() > 0) { + if (url == null || url.isEmpty()) { + clearFrameSet(ID_COMMERCIAL_URL); + } else { invalidateDataLength(); ID3v2WWWFrameData frameData = new ID3v2WWWFrameData(useFrameUnsynchronisation(), url); addFrame(createFrame(ID_COMMERCIAL_URL, frameData.toBytes()), true); @@ -854,7 +892,9 @@ public String getCopyrightUrl() { @Override public void setCopyrightUrl(String url) { - if (url != null && url.length() > 0) { + if (url == null || url.isEmpty()) { + clearFrameSet(ID_COPYRIGHT_URL); + } else { invalidateDataLength(); ID3v2WWWFrameData frameData = new ID3v2WWWFrameData(useFrameUnsynchronisation(), url); addFrame(createFrame(ID_COPYRIGHT_URL, frameData.toBytes()), true); @@ -870,7 +910,9 @@ public String getAudiofileUrl() { @Override public void setAudiofileUrl(String url) { - if (url != null && url.length() > 0) { + if (url == null || url.isEmpty()) { + clearFrameSet(ID_AUDIOFILE_URL); + } else { invalidateDataLength(); ID3v2WWWFrameData frameData = new ID3v2WWWFrameData(useFrameUnsynchronisation(), url); addFrame(createFrame(ID_AUDIOFILE_URL, frameData.toBytes()), true); @@ -886,7 +928,9 @@ public String getAudioSourceUrl() { @Override public void setAudioSourceUrl(String url) { - if (url != null && url.length() > 0) { + if (url == null || url.isEmpty()) { + clearFrameSet(ID_AUDIOSOURCE_URL); + } else { invalidateDataLength(); ID3v2WWWFrameData frameData = new ID3v2WWWFrameData(useFrameUnsynchronisation(), url); addFrame(createFrame(ID_AUDIOSOURCE_URL, frameData.toBytes()), true); @@ -902,7 +946,9 @@ public String getRadiostationUrl() { @Override public void setRadiostationUrl(String url) { - if (url != null && url.length() > 0) { + if (url == null || url.isEmpty()) { + clearFrameSet(ID_RADIOSTATION_URL); + } else { invalidateDataLength(); ID3v2WWWFrameData frameData = new ID3v2WWWFrameData(useFrameUnsynchronisation(), url); addFrame(createFrame(ID_RADIOSTATION_URL, frameData.toBytes()), true); @@ -918,7 +964,9 @@ public String getPaymentUrl() { @Override public void setPaymentUrl(String url) { - if (url != null && url.length() > 0) { + if (url == null || url.isEmpty()) { + clearFrameSet(ID_PAYMENT_URL); + } else { invalidateDataLength(); ID3v2WWWFrameData frameData = new ID3v2WWWFrameData(useFrameUnsynchronisation(), url); addFrame(createFrame(ID_PAYMENT_URL, frameData.toBytes()), true); @@ -934,7 +982,9 @@ public String getPublisherUrl() { @Override public void setPublisherUrl(String url) { - if (url != null && url.length() > 0) { + if (url == null || url.isEmpty()) { + clearFrameSet(ID_PUBLISHER_URL); + } else { invalidateDataLength(); ID3v2WWWFrameData frameData = new ID3v2WWWFrameData(useFrameUnsynchronisation(), url); addFrame(createFrame(ID_PUBLISHER_URL, frameData.toBytes()), true); @@ -950,7 +1000,9 @@ public String getUrl() { @Override public void setUrl(String url) { - if (url != null && url.length() > 0) { + if (url == null || url.isEmpty()) { + clearFrameSet(ID_URL); + } else { invalidateDataLength(); ID3v2UrlFrameData frameData = new ID3v2UrlFrameData(useFrameUnsynchronisation(), null, url); addFrame(createFrame(ID_URL, frameData.toBytes()), true); @@ -968,7 +1020,9 @@ public ArrayList getChapters() { @Override public void setChapters(ArrayList chapters) { - if (chapters != null) { + if (chapters == null) { + clearFrameSet(ID_CHAPTER); + } else { invalidateDataLength(); boolean first = true; for (ID3v2ChapterFrameData chapter : chapters) { @@ -993,7 +1047,9 @@ public ArrayList getChapterTOC() { @Override public void setChapterTOC(ArrayList toc) { - if (toc != null) { + if (toc == null) { + clearFrameSet(ID_CHAPTER_TOC); + } else { invalidateDataLength(); boolean first = true; for (ID3v2ChapterTOCFrameData ct : toc) { @@ -1016,7 +1072,9 @@ public String getEncoder() { @Override public void setEncoder(String encoder) { - if (encoder != null && encoder.length() > 0) { + if (encoder == null || encoder.isEmpty()) { + clearFrameSet(ID_ENCODER); + } else { invalidateDataLength(); ID3v2TextFrameData frameData = new ID3v2TextFrameData(useFrameUnsynchronisation(), new EncodedText(encoder)); addFrame(createFrame(ID_ENCODER, frameData.toBytes()), true); @@ -1037,7 +1095,9 @@ public void setAlbumImage(byte[] albumImage, String mimeType) { @Override public void setAlbumImage(byte[] albumImage, String mimeType, byte imageType, String imageDescription) { - if (albumImage != null && albumImage.length > 0 && mimeType != null && mimeType.length() > 0) { + if (albumImage == null || albumImage.length == 0 || mimeType == null || mimeType.isEmpty()) { + clearFrameSet(ID_IMAGE); + } else { invalidateDataLength(); ID3v2PictureFrameData frameData = new ID3v2PictureFrameData( useFrameUnsynchronisation(), mimeType, imageType, diff --git a/src/test/java/com/mpatric/mp3agic/ID3v2TagSetTest.java b/src/test/java/com/mpatric/mp3agic/ID3v2TagSetTest.java new file mode 100644 index 00000000..5d660c16 --- /dev/null +++ b/src/test/java/com/mpatric/mp3agic/ID3v2TagSetTest.java @@ -0,0 +1,622 @@ +package com.mpatric.mp3agic; + +import org.junit.Test; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import static org.junit.Assert.*; + +public class ID3v2TagSetTest { + @Test + public void shouldClearTheFrameWhenSetTrackNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setTrack("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setTrack(null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetTrackEmpty() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setTrack("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setTrack(""); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetPartOfSetNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setPartOfSet("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setPartOfSet(null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetPartOfSetEmpty() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setPartOfSet("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setPartOfSet(""); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetGroupingNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setGrouping("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setGrouping(null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetGroupingEmpty() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setGrouping("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setGrouping(""); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetArtistNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setArtist("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setArtist(null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetArtistEmpty() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setArtist("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setArtist(""); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetAlbumArtistNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setAlbumArtist("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setAlbumArtist(null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetAlbumArtistEmpty() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setAlbumArtist("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setAlbumArtist(""); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetTitleNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setTitle("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setTitle(null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetTitleEmpty() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setTitle("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setTitle(""); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetAlbumNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setAlbum("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setAlbum(null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetAlbumEmpty() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setAlbum("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setAlbum(""); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetYearNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setYear("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setYear(null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetYearEmpty() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setYear("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setYear(""); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetDateNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setDate("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setDate(null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetDateEmpty() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setDate("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setDate(""); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetKeyNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setKey("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setKey(null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetKeyEmpty() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setKey("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setKey(""); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetCommentNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setComment("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setComment(null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetCommentEmpty() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setComment("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setComment(""); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetItunesCommentNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setItunesComment("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setItunesComment(null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetItunesCommentEmpty() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setItunesComment("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setItunesComment(""); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetLyricsNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setLyrics("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setLyrics(null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetLyricsEmpty() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setLyrics("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setLyrics(""); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetComposerNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setComposer("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setComposer(null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetComposerEmpty() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setComposer("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setComposer(""); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetPublisherNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setPublisher("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setPublisher(null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetPublisherEmpty() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setPublisher("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setPublisher(""); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetOriginalArtistNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setOriginalArtist("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setOriginalArtist(null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetOriginalArtistEmpty() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setOriginalArtist("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setOriginalArtist(""); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetCopyrightNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setCopyright("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setCopyright(null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetCopyrightEmpty() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setCopyright("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setCopyright(""); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetArtistUrlNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setArtistUrl("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setArtistUrl(null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetArtistUrlEmpty() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setArtistUrl("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setArtistUrl(""); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetCommercialUrlNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setCommercialUrl("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setCommercialUrl(null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetCommercialUrlEmpty() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setCommercialUrl("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setCommercialUrl(""); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetCopyrightUrlNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setCopyrightUrl("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setCopyrightUrl(null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetCopyrightUrlEmpty() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setCopyrightUrl("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setCopyrightUrl(""); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetAudiofileUrlNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setAudiofileUrl("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setAudiofileUrl(null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetAudiofileUrlEmpty() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setAudiofileUrl("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setAudiofileUrl(""); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetAudioSourceUrlNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setAudioSourceUrl("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setAudioSourceUrl(null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetAudioSourceUrlEmpty() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setAudioSourceUrl("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setAudioSourceUrl(""); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetRadiostationUrlNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setRadiostationUrl("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setRadiostationUrl(null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetRadiostationUrlEmpty() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setRadiostationUrl("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setRadiostationUrl(""); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetPaymentUrlNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setPaymentUrl("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setPaymentUrl(null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetPaymentUrlEmpty() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setPaymentUrl("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setPaymentUrl(""); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetPublisherUrlNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setPublisherUrl("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setPublisherUrl(null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetPublisherUrlEmpty() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setPublisherUrl("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setPublisherUrl(""); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetUrlNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setUrl("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setUrl(null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetUrlEmpty() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setUrl("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setUrl(""); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetChaptersNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + ArrayList chapters = new ArrayList<>(); + ID3v2ChapterFrameData chapter = new ID3v2ChapterFrameData(false); + chapter.setId("abc"); + chapters.add(chapter); + id3Tag.setChapters(chapters); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setChapters(null); + assertEquals(length, id3Tag.getDataLength()); + } + + + @Test + public void shouldClearTheFrameWhenSetChapterTOCNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + ArrayList chapterTOCs = new ArrayList<>(); + ID3v2ChapterTOCFrameData chapterTOC = new ID3v2ChapterTOCFrameData(false); + chapterTOC.setId("abc"); + chapterTOC.setChildren(new String[]{}); + chapterTOCs.add(chapterTOC); + id3Tag.setChapterTOC(chapterTOCs); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setChapterTOC(null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetEncoderNull() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setEncoder("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setEncoder(null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetEncoderEmpty() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setEncoder("abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setEncoder(""); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetAlbumImageNullAlbumImage() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setAlbumImage(new byte[]{'a'}, "abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setAlbumImage(null, "abc"); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetAlbumImageNullMimeType() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setAlbumImage(new byte[]{'a'}, "abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setAlbumImage(new byte[]{'a'}, null); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetAlbumImageEmptyAlbumImage() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setAlbumImage(new byte[]{'a'}, "abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setAlbumImage(new byte[]{}, "abc"); + assertEquals(length, id3Tag.getDataLength()); + } + + @Test + public void shouldClearTheFrameWhenSetAlbumImageEmptyMimeType() { + ID3v24Tag id3Tag = new ID3v24Tag(); + int length = id3Tag.getDataLength(); + id3Tag.setAlbumImage(new byte[]{'a'}, "abc"); + assertTrue(id3Tag.getDataLength() > length); + id3Tag.setAlbumImage(new byte[]{'a'}, ""); + assertEquals(length, id3Tag.getDataLength()); + } +}