1
package org.jaudiotagger.tag.id3;
3
import junit.framework.Test;
4
import junit.framework.TestCase;
5
import junit.framework.TestSuite;
6
import org.jaudiotagger.AbstractTestCase;
7
import org.jaudiotagger.audio.exceptions.InvalidAudioFrameException;
8
import org.jaudiotagger.audio.exceptions.ReadOnlyFileException;
9
import org.jaudiotagger.audio.mp3.MP3File;
10
import org.jaudiotagger.tag.TagException;
11
import org.jaudiotagger.tag.TagOptionSingleton;
12
import org.jaudiotagger.tag.id3.framebody.FrameBodyCOMM;
13
import org.jaudiotagger.tag.id3.framebody.FrameBodyWXXX;
14
import org.jaudiotagger.tag.id3.framebody.FrameBodyWXXXTest;
15
import org.jaudiotagger.tag.id3.valuepair.TextEncoding;
18
import java.io.IOException;
23
public class Unicode24NullTerminatedTagTest extends TestCase
30
public Unicode24NullTerminatedTagTest(String arg0)
36
* Command line entrance.
40
public static void main(String[] args)
42
junit.textui.TestRunner.run(Unicode24NullTerminatedTagTest.suite());
45
/////////////////////////////////////////////////////////////////////////
46
// TestCase classes to override
47
/////////////////////////////////////////////////////////////////////////
52
protected void setUp()
54
TagOptionSingleton.getInstance().setToDefault();
60
protected void tearDown()
67
// protected void runTest()
72
* Builds the Test Suite.
74
* @return the Test Suite.
76
public static Test suite()
78
return new TestSuite(Unicode24NullTerminatedTagTest.class);
81
/////////////////////////////////////////////////////////////////////////
83
/////////////////////////////////////////////////////////////////////////
88
public void testUTF8WithNullTerminator() throws IOException, TagException, ReadOnlyFileException, InvalidAudioFrameException, RuntimeException
90
MP3File mp3File = new MP3File(AbstractTestCase.copyAudioToTmp("testV24-comments-utf8.mp3"));
91
AbstractID3v2Tag id3v2Tag = mp3File.getID3v2Tag();
92
assertNotNull(id3v2Tag);
93
AbstractID3v2Frame frame = (AbstractID3v2Frame) id3v2Tag.getFrame("COMM");
95
AbstractTagFrameBody frameBody = frame.getBody();
96
assertTrue(frameBody instanceof FrameBodyCOMM);
97
FrameBodyCOMM commFrameBody = (FrameBodyCOMM) frameBody;
99
//String borodin = "\u0411\u043e\u0440\u043e\u0434\u0438\u043d";
100
byte UTF8_ENCODING = (byte) TextEncoding.UTF_8;
101
String language = "eng";
102
String comment = "some comment here";
103
String description = "cc";
104
assertEquals(UTF8_ENCODING, commFrameBody.getTextEncoding());
105
assertEquals(language, commFrameBody.getLanguage());
106
assertEquals(description, commFrameBody.getDescription());
107
assertEquals(comment, commFrameBody.getText());
109
ID3v24Frame newFrame = new ID3v24Frame(ID3v24Frames.FRAME_ID_COMMENT);
110
FrameBodyCOMM targetFrameBody = (FrameBodyCOMM) newFrame.getBody();
111
targetFrameBody.setTextEncoding(UTF8_ENCODING);
112
targetFrameBody.setLanguage(language);
113
targetFrameBody.setDescription(description);
114
targetFrameBody.setText(comment);
115
assertEquals(UTF8_ENCODING, targetFrameBody.getTextEncoding());
116
assertEquals(language, targetFrameBody.getLanguage());
117
assertEquals(description, targetFrameBody.getDescription());
118
assertEquals(comment, targetFrameBody.getText());
120
assertEquals(targetFrameBody, commFrameBody);
124
* Create a String that only contains text within IS8859 charset so should be
129
public void testCreateISO8859EncodedNullTerminatedString() throws Exception
131
File testFile = AbstractTestCase.copyAudioToTmp("testV1.mp3");
132
MP3File mp3File = new MP3File(testFile);
134
ID3v24Frame frame = new ID3v24Frame(ID3v24Frames.FRAME_ID_USER_DEFINED_URL);
135
Exception exceptionCaught = null;
136
FrameBodyWXXX fb = null;
139
fb = FrameBodyWXXXTest.getInitialisedBody();
147
assertNull(exceptionCaught);
148
assertEquals(ID3v24Frames.FRAME_ID_USER_DEFINED_URL, fb.getIdentifier());
149
assertEquals(TextEncoding.ISO_8859_1, fb.getTextEncoding());
150
assertEquals(FrameBodyWXXXTest.WXXX_TEST_STRING, fb.getDescription());
151
assertEquals(FrameBodyWXXXTest.WXXX_TEST_URL, fb.getUrlLink());
154
ID3v24Tag tag = new ID3v24Tag();
156
mp3File.setID3v2Tag(tag);
159
//Reload, should be written as UTF16 because of the text
160
mp3File = new MP3File(testFile);
161
frame = (ID3v24Frame) mp3File.getID3v2Tag().getFrame(ID3v24Frames.FRAME_ID_USER_DEFINED_URL);
162
FrameBodyWXXX body = (FrameBodyWXXX) frame.getBody();
163
assertEquals(ID3v24Frames.FRAME_ID_USER_DEFINED_URL, body.getIdentifier());
164
assertEquals(TextEncoding.ISO_8859_1, body.getTextEncoding());
165
assertEquals(FrameBodyWXXXTest.WXXX_TEST_STRING, body.getDescription());
166
assertEquals(FrameBodyWXXXTest.WXXX_TEST_URL, body.getUrlLink());
171
* Can explictly uses UTF-16 even if not required
172
* as UTf16 by default
176
public void testCreateUTF16EncodedNullTerminatedString() throws Exception
178
File testFile = AbstractTestCase.copyAudioToTmp("testV1.mp3");
179
MP3File mp3File = new MP3File(testFile);
181
ID3v24Frame frame = new ID3v24Frame(ID3v24Frames.FRAME_ID_USER_DEFINED_URL);
182
Exception exceptionCaught = null;
183
FrameBodyWXXX fb = null;
186
fb = FrameBodyWXXXTest.getInitialisedBody();
187
fb.setTextEncoding(TextEncoding.UTF_16);
195
assertNull(exceptionCaught);
196
assertEquals(ID3v24Frames.FRAME_ID_USER_DEFINED_URL, fb.getIdentifier());
197
assertEquals(TextEncoding.UTF_16, fb.getTextEncoding());
198
assertEquals(FrameBodyWXXXTest.WXXX_TEST_STRING, fb.getDescription());
201
ID3v24Tag tag = new ID3v24Tag();
203
mp3File.setID3v2Tag(tag);
206
//Reload, should be written as UTF16 because of the text
207
mp3File = new MP3File(testFile);
208
frame = (ID3v24Frame) mp3File.getID3v2Tag().getFrame(ID3v24Frames.FRAME_ID_USER_DEFINED_URL);
209
FrameBodyWXXX body = (FrameBodyWXXX) frame.getBody();
210
assertEquals(ID3v24Frames.FRAME_ID_USER_DEFINED_URL, body.getIdentifier());
211
assertEquals(TextEncoding.UTF_16, body.getTextEncoding());
212
assertEquals(FrameBodyWXXXTest.WXXX_TEST_STRING, body.getDescription());
213
assertEquals(FrameBodyWXXXTest.WXXX_TEST_URL, body.getUrlLink());
219
* Create a String that contains text outside of the IS8859 charset should be written
220
* as UTf16 by default
224
public void testCreateUTF16AutoEncodedNullTerminatedString() throws Exception
226
File testFile = AbstractTestCase.copyAudioToTmp("testV1.mp3");
227
MP3File mp3File = new MP3File(testFile);
229
ID3v24Frame frame = new ID3v24Frame(ID3v24Frames.FRAME_ID_USER_DEFINED_URL);
230
Exception exceptionCaught = null;
231
FrameBodyWXXX fb = null;
234
fb = FrameBodyWXXXTest.getUnicodeRequiredInitialisedBody();
242
assertNull(exceptionCaught);
243
assertEquals(ID3v24Frames.FRAME_ID_USER_DEFINED_URL, fb.getIdentifier());
244
assertEquals(TextEncoding.ISO_8859_1, fb.getTextEncoding());
245
assertEquals(FrameBodyWXXXTest.WXXX_UNICODE_REQUIRED_TEST_STRING, fb.getDescription());
246
assertEquals(FrameBodyWXXXTest.WXXX_TEST_URL, fb.getUrlLink());
249
ID3v24Tag tag = new ID3v24Tag();
251
mp3File.setID3v2Tag(tag);
254
//Reload, should be written as UTF16 because of the text
255
mp3File = new MP3File(testFile);
256
frame = (ID3v24Frame) mp3File.getID3v2Tag().getFrame(ID3v24Frames.FRAME_ID_USER_DEFINED_URL);
257
FrameBodyWXXX body = (FrameBodyWXXX) frame.getBody();
258
assertEquals(ID3v24Frames.FRAME_ID_USER_DEFINED_URL, body.getIdentifier());
259
assertEquals(TextEncoding.UTF_16, body.getTextEncoding());
260
assertEquals(FrameBodyWXXXTest.WXXX_UNICODE_REQUIRED_TEST_STRING, body.getDescription());
261
assertEquals(FrameBodyWXXXTest.WXXX_TEST_URL, body.getUrlLink());
266
* Strings can bbe written to UTF16BE if text encoding explicitly set
270
public void testCreateUTF16BEEncodedNullTerminatedString() throws Exception
272
File testFile = AbstractTestCase.copyAudioToTmp("testV1.mp3");
273
MP3File mp3File = new MP3File(testFile);
275
ID3v24Frame frame = new ID3v24Frame(ID3v24Frames.FRAME_ID_USER_DEFINED_URL);
276
Exception exceptionCaught = null;
277
FrameBodyWXXX fb = null;
280
fb = FrameBodyWXXXTest.getUnicodeRequiredInitialisedBody();
281
fb.setTextEncoding(TextEncoding.UTF_16BE);
289
assertNull(exceptionCaught);
290
assertEquals(ID3v24Frames.FRAME_ID_USER_DEFINED_URL, fb.getIdentifier());
291
assertEquals(TextEncoding.UTF_16BE, fb.getTextEncoding());
292
assertEquals(FrameBodyWXXXTest.WXXX_UNICODE_REQUIRED_TEST_STRING, fb.getDescription());
293
assertEquals(FrameBodyWXXXTest.WXXX_TEST_URL, fb.getUrlLink());
296
ID3v24Tag tag = new ID3v24Tag();
298
mp3File.setID3v2Tag(tag);
301
//Reload, should be written as UTF16BE
302
mp3File = new MP3File(testFile);
303
frame = (ID3v24Frame) mp3File.getID3v2Tag().getFrame(ID3v24Frames.FRAME_ID_USER_DEFINED_URL);
304
FrameBodyWXXX body = (FrameBodyWXXX) frame.getBody();
305
assertEquals(ID3v24Frames.FRAME_ID_USER_DEFINED_URL, body.getIdentifier());
306
assertEquals(TextEncoding.UTF_16BE, body.getTextEncoding());
307
assertEquals(FrameBodyWXXXTest.WXXX_UNICODE_REQUIRED_TEST_STRING, body.getDescription());
308
assertEquals(FrameBodyWXXXTest.WXXX_TEST_URL, body.getUrlLink());
313
* Strings can bbe written to UTF8 if text encoding explicitly set
317
public void testCreateUTF8EncodedNullTerminatedString() throws Exception
319
File testFile = AbstractTestCase.copyAudioToTmp("testV1.mp3");
320
MP3File mp3File = new MP3File(testFile);
322
ID3v24Frame frame = new ID3v24Frame(ID3v24Frames.FRAME_ID_USER_DEFINED_URL);
323
Exception exceptionCaught = null;
324
FrameBodyWXXX fb = null;
327
fb = FrameBodyWXXXTest.getUnicodeRequiredInitialisedBody();
328
fb.setTextEncoding(TextEncoding.UTF_8);
336
assertNull(exceptionCaught);
337
assertEquals(ID3v24Frames.FRAME_ID_USER_DEFINED_URL, fb.getIdentifier());
338
assertEquals(TextEncoding.UTF_8, fb.getTextEncoding());
339
assertEquals(FrameBodyWXXXTest.WXXX_UNICODE_REQUIRED_TEST_STRING, fb.getDescription());
340
assertEquals(FrameBodyWXXXTest.WXXX_TEST_URL, fb.getUrlLink());
343
ID3v24Tag tag = new ID3v24Tag();
345
mp3File.setID3v2Tag(tag);
348
//Reload, should be written as UTF8
349
mp3File = new MP3File(testFile);
350
frame = (ID3v24Frame) mp3File.getID3v2Tag().getFrame(ID3v24Frames.FRAME_ID_USER_DEFINED_URL);
351
FrameBodyWXXX body = (FrameBodyWXXX) frame.getBody();
352
assertEquals(ID3v24Frames.FRAME_ID_USER_DEFINED_URL, body.getIdentifier());
353
assertEquals(TextEncoding.UTF_8, body.getTextEncoding());
354
assertEquals(FrameBodyWXXXTest.WXXX_UNICODE_REQUIRED_TEST_STRING, body.getDescription());
355
assertEquals(FrameBodyWXXXTest.WXXX_TEST_URL, body.getUrlLink());
1
package org.jaudiotagger.tag.id3;
3
import junit.framework.Test;
4
import junit.framework.TestCase;
5
import junit.framework.TestSuite;
6
import org.jaudiotagger.AbstractTestCase;
7
import org.jaudiotagger.audio.exceptions.InvalidAudioFrameException;
8
import org.jaudiotagger.audio.exceptions.ReadOnlyFileException;
9
import org.jaudiotagger.audio.mp3.MP3File;
10
import org.jaudiotagger.tag.TagException;
11
import org.jaudiotagger.tag.TagOptionSingleton;
12
import org.jaudiotagger.tag.id3.framebody.FrameBodyCOMM;
13
import org.jaudiotagger.tag.id3.framebody.FrameBodyWXXX;
14
import org.jaudiotagger.tag.id3.framebody.FrameBodyWXXXTest;
15
import org.jaudiotagger.tag.id3.valuepair.TextEncoding;
18
import java.io.IOException;
23
public class Unicode24NullTerminatedTagTest extends TestCase
30
public Unicode24NullTerminatedTagTest(String arg0)
36
* Command line entrance.
40
public static void main(String[] args)
42
junit.textui.TestRunner.run(Unicode24NullTerminatedTagTest.suite());
45
/////////////////////////////////////////////////////////////////////////
46
// TestCase classes to override
47
/////////////////////////////////////////////////////////////////////////
52
protected void setUp()
54
TagOptionSingleton.getInstance().setToDefault();
60
protected void tearDown()
67
// protected void runTest()
72
* Builds the Test Suite.
74
* @return the Test Suite.
76
public static Test suite()
78
return new TestSuite(Unicode24NullTerminatedTagTest.class);
81
/////////////////////////////////////////////////////////////////////////
83
/////////////////////////////////////////////////////////////////////////
88
public void testUTF8WithNullTerminator() throws IOException, TagException, ReadOnlyFileException, InvalidAudioFrameException, RuntimeException
90
MP3File mp3File = new MP3File(AbstractTestCase.copyAudioToTmp("testV24-comments-utf8.mp3"));
91
AbstractID3v2Tag id3v2Tag = mp3File.getID3v2Tag();
92
assertNotNull(id3v2Tag);
93
AbstractID3v2Frame frame = (AbstractID3v2Frame) id3v2Tag.getFrame("COMM");
95
AbstractTagFrameBody frameBody = frame.getBody();
96
assertTrue(frameBody instanceof FrameBodyCOMM);
97
FrameBodyCOMM commFrameBody = (FrameBodyCOMM) frameBody;
99
//String borodin = "\u0411\u043e\u0440\u043e\u0434\u0438\u043d";
100
byte UTF8_ENCODING = (byte) TextEncoding.UTF_8;
101
String language = "eng";
102
String comment = "some comment here";
103
String description = "cc";
104
assertEquals(UTF8_ENCODING, commFrameBody.getTextEncoding());
105
assertEquals(language, commFrameBody.getLanguage());
106
assertEquals(description, commFrameBody.getDescription());
107
assertEquals(comment, commFrameBody.getText());
109
ID3v24Frame newFrame = new ID3v24Frame(ID3v24Frames.FRAME_ID_COMMENT);
110
FrameBodyCOMM targetFrameBody = (FrameBodyCOMM) newFrame.getBody();
111
targetFrameBody.setTextEncoding(UTF8_ENCODING);
112
targetFrameBody.setLanguage(language);
113
targetFrameBody.setDescription(description);
114
targetFrameBody.setText(comment);
115
assertEquals(UTF8_ENCODING, targetFrameBody.getTextEncoding());
116
assertEquals(language, targetFrameBody.getLanguage());
117
assertEquals(description, targetFrameBody.getDescription());
118
assertEquals(comment, targetFrameBody.getText());
120
assertEquals(targetFrameBody, commFrameBody);
124
* Create a String that only contains text within IS8859 charset so should be
129
public void testCreateISO8859EncodedNullTerminatedString() throws Exception
131
File testFile = AbstractTestCase.copyAudioToTmp("testV1.mp3");
132
MP3File mp3File = new MP3File(testFile);
134
ID3v24Frame frame = new ID3v24Frame(ID3v24Frames.FRAME_ID_USER_DEFINED_URL);
135
Exception exceptionCaught = null;
136
FrameBodyWXXX fb = null;
139
fb = FrameBodyWXXXTest.getInitialisedBody();
147
assertNull(exceptionCaught);
148
assertEquals(ID3v24Frames.FRAME_ID_USER_DEFINED_URL, fb.getIdentifier());
149
assertEquals(TextEncoding.ISO_8859_1, fb.getTextEncoding());
150
assertEquals(FrameBodyWXXXTest.WXXX_TEST_STRING, fb.getDescription());
151
assertEquals(FrameBodyWXXXTest.WXXX_TEST_URL, fb.getUrlLink());
154
ID3v24Tag tag = new ID3v24Tag();
156
mp3File.setID3v2Tag(tag);
159
//Reload, should be written as UTF16 because of the text
160
mp3File = new MP3File(testFile);
161
frame = (ID3v24Frame) mp3File.getID3v2Tag().getFrame(ID3v24Frames.FRAME_ID_USER_DEFINED_URL);
162
FrameBodyWXXX body = (FrameBodyWXXX) frame.getBody();
163
assertEquals(ID3v24Frames.FRAME_ID_USER_DEFINED_URL, body.getIdentifier());
164
assertEquals(TextEncoding.ISO_8859_1, body.getTextEncoding());
165
assertEquals(FrameBodyWXXXTest.WXXX_TEST_STRING, body.getDescription());
166
assertEquals(FrameBodyWXXXTest.WXXX_TEST_URL, body.getUrlLink());
171
* Can explictly uses UTF-16 even if not required
172
* as UTf16 by default
176
public void testCreateUTF16EncodedNullTerminatedString() throws Exception
178
File testFile = AbstractTestCase.copyAudioToTmp("testV1.mp3");
179
MP3File mp3File = new MP3File(testFile);
181
ID3v24Frame frame = new ID3v24Frame(ID3v24Frames.FRAME_ID_USER_DEFINED_URL);
182
Exception exceptionCaught = null;
183
FrameBodyWXXX fb = null;
186
fb = FrameBodyWXXXTest.getInitialisedBody();
187
fb.setTextEncoding(TextEncoding.UTF_16);
195
assertNull(exceptionCaught);
196
assertEquals(ID3v24Frames.FRAME_ID_USER_DEFINED_URL, fb.getIdentifier());
197
assertEquals(TextEncoding.UTF_16, fb.getTextEncoding());
198
assertEquals(FrameBodyWXXXTest.WXXX_TEST_STRING, fb.getDescription());
201
ID3v24Tag tag = new ID3v24Tag();
203
mp3File.setID3v2Tag(tag);
206
//Reload, should be written as UTF16 because of the text
207
mp3File = new MP3File(testFile);
208
frame = (ID3v24Frame) mp3File.getID3v2Tag().getFrame(ID3v24Frames.FRAME_ID_USER_DEFINED_URL);
209
FrameBodyWXXX body = (FrameBodyWXXX) frame.getBody();
210
assertEquals(ID3v24Frames.FRAME_ID_USER_DEFINED_URL, body.getIdentifier());
211
assertEquals(TextEncoding.UTF_16, body.getTextEncoding());
212
assertEquals(FrameBodyWXXXTest.WXXX_TEST_STRING, body.getDescription());
213
assertEquals(FrameBodyWXXXTest.WXXX_TEST_URL, body.getUrlLink());
219
* Create a String that contains text outside of the IS8859 charset should be written
220
* as UTf16 by default
224
public void testCreateUTF16AutoEncodedNullTerminatedString() throws Exception
226
File testFile = AbstractTestCase.copyAudioToTmp("testV1.mp3");
227
MP3File mp3File = new MP3File(testFile);
229
ID3v24Frame frame = new ID3v24Frame(ID3v24Frames.FRAME_ID_USER_DEFINED_URL);
230
Exception exceptionCaught = null;
231
FrameBodyWXXX fb = null;
234
fb = FrameBodyWXXXTest.getUnicodeRequiredInitialisedBody();
242
assertNull(exceptionCaught);
243
assertEquals(ID3v24Frames.FRAME_ID_USER_DEFINED_URL, fb.getIdentifier());
244
assertEquals(TextEncoding.ISO_8859_1, fb.getTextEncoding());
245
assertEquals(FrameBodyWXXXTest.WXXX_UNICODE_REQUIRED_TEST_STRING, fb.getDescription());
246
assertEquals(FrameBodyWXXXTest.WXXX_TEST_URL, fb.getUrlLink());
249
ID3v24Tag tag = new ID3v24Tag();
251
mp3File.setID3v2Tag(tag);
254
//Reload, should be written as UTF16 because of the text
255
mp3File = new MP3File(testFile);
256
frame = (ID3v24Frame) mp3File.getID3v2Tag().getFrame(ID3v24Frames.FRAME_ID_USER_DEFINED_URL);
257
FrameBodyWXXX body = (FrameBodyWXXX) frame.getBody();
258
assertEquals(ID3v24Frames.FRAME_ID_USER_DEFINED_URL, body.getIdentifier());
259
assertEquals(TextEncoding.UTF_16, body.getTextEncoding());
260
assertEquals(FrameBodyWXXXTest.WXXX_UNICODE_REQUIRED_TEST_STRING, body.getDescription());
261
assertEquals(FrameBodyWXXXTest.WXXX_TEST_URL, body.getUrlLink());
266
* Strings can bbe written to UTF16BE if text encoding explicitly set
270
public void testCreateUTF16BEEncodedNullTerminatedString() throws Exception
272
File testFile = AbstractTestCase.copyAudioToTmp("testV1.mp3");
273
MP3File mp3File = new MP3File(testFile);
275
ID3v24Frame frame = new ID3v24Frame(ID3v24Frames.FRAME_ID_USER_DEFINED_URL);
276
Exception exceptionCaught = null;
277
FrameBodyWXXX fb = null;
280
fb = FrameBodyWXXXTest.getUnicodeRequiredInitialisedBody();
281
fb.setTextEncoding(TextEncoding.UTF_16BE);
289
assertNull(exceptionCaught);
290
assertEquals(ID3v24Frames.FRAME_ID_USER_DEFINED_URL, fb.getIdentifier());
291
assertEquals(TextEncoding.UTF_16BE, fb.getTextEncoding());
292
assertEquals(FrameBodyWXXXTest.WXXX_UNICODE_REQUIRED_TEST_STRING, fb.getDescription());
293
assertEquals(FrameBodyWXXXTest.WXXX_TEST_URL, fb.getUrlLink());
296
ID3v24Tag tag = new ID3v24Tag();
298
mp3File.setID3v2Tag(tag);
301
//Reload, should be written as UTF16BE
302
mp3File = new MP3File(testFile);
303
frame = (ID3v24Frame) mp3File.getID3v2Tag().getFrame(ID3v24Frames.FRAME_ID_USER_DEFINED_URL);
304
FrameBodyWXXX body = (FrameBodyWXXX) frame.getBody();
305
assertEquals(ID3v24Frames.FRAME_ID_USER_DEFINED_URL, body.getIdentifier());
306
assertEquals(TextEncoding.UTF_16BE, body.getTextEncoding());
307
assertEquals(FrameBodyWXXXTest.WXXX_UNICODE_REQUIRED_TEST_STRING, body.getDescription());
308
assertEquals(FrameBodyWXXXTest.WXXX_TEST_URL, body.getUrlLink());
313
* Strings can bbe written to UTF8 if text encoding explicitly set
317
public void testCreateUTF8EncodedNullTerminatedString() throws Exception
319
File testFile = AbstractTestCase.copyAudioToTmp("testV1.mp3");
320
MP3File mp3File = new MP3File(testFile);
322
ID3v24Frame frame = new ID3v24Frame(ID3v24Frames.FRAME_ID_USER_DEFINED_URL);
323
Exception exceptionCaught = null;
324
FrameBodyWXXX fb = null;
327
fb = FrameBodyWXXXTest.getUnicodeRequiredInitialisedBody();
328
fb.setTextEncoding(TextEncoding.UTF_8);
336
assertNull(exceptionCaught);
337
assertEquals(ID3v24Frames.FRAME_ID_USER_DEFINED_URL, fb.getIdentifier());
338
assertEquals(TextEncoding.UTF_8, fb.getTextEncoding());
339
assertEquals(FrameBodyWXXXTest.WXXX_UNICODE_REQUIRED_TEST_STRING, fb.getDescription());
340
assertEquals(FrameBodyWXXXTest.WXXX_TEST_URL, fb.getUrlLink());
343
ID3v24Tag tag = new ID3v24Tag();
345
mp3File.setID3v2Tag(tag);
348
//Reload, should be written as UTF8
349
mp3File = new MP3File(testFile);
350
frame = (ID3v24Frame) mp3File.getID3v2Tag().getFrame(ID3v24Frames.FRAME_ID_USER_DEFINED_URL);
351
FrameBodyWXXX body = (FrameBodyWXXX) frame.getBody();
352
assertEquals(ID3v24Frames.FRAME_ID_USER_DEFINED_URL, body.getIdentifier());
353
assertEquals(TextEncoding.UTF_8, body.getTextEncoding());
354
assertEquals(FrameBodyWXXXTest.WXXX_UNICODE_REQUIRED_TEST_STRING, body.getDescription());
355
assertEquals(FrameBodyWXXXTest.WXXX_TEST_URL, body.getUrlLink());