184 lines
5.5 KiB
JavaScript
184 lines
5.5 KiB
JavaScript
//
|
|
// Jala Project [http://opensvn.csie.org/traccgi/jala]
|
|
//
|
|
// Copyright 2004 ORF Online und Teletext GmbH
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the ``License'');
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an ``AS IS'' BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
//
|
|
// $Revision$
|
|
// $LastChangedBy$
|
|
// $LastChangedDate$
|
|
// $HeadURL$
|
|
//
|
|
|
|
/**
|
|
* a global variable containing the mp3 file to write to and read from
|
|
* @type helma.File
|
|
*/
|
|
var mp3File, mp3Filev2, mp3FileNoTags;
|
|
|
|
var setup = function() {
|
|
var srcFile = jala.Test.getTestFile("Mp3.test.mp3");
|
|
mp3File = new helma.File(java.lang.System.getProperty("java.io.tmpdir"), "test.mp3");
|
|
mp3Filev2 = new helma.File(java.lang.System.getProperty("java.io.tmpdir"), "testv2.mp3");
|
|
mp3FileNoTags = new helma.File(java.lang.System.getProperty("java.io.tmpdir"), "test_notags.mp3");
|
|
srcFile.hardCopy(mp3File);
|
|
srcFile.hardCopy(mp3Filev2);
|
|
srcFile.hardCopy(mp3FileNoTags);
|
|
// create some mp3 v1 tags
|
|
var mp3 = new jala.Mp3(mp3File);
|
|
var tag = mp3.createV1Tag();
|
|
tag.setArtist("v1 - jala.Mp3");
|
|
tag.setTitle("v1 - Test");
|
|
tag.setAlbum("v1 - Jala JavaScript Library");
|
|
tag.setGenre("Electronic");
|
|
tag.setComment("v1 - Play it loud!");
|
|
tag.setTrackNumber("1");
|
|
tag.setYear("2006");
|
|
mp3.save();
|
|
// crate mp3 v2 tags
|
|
var mp3v2 = new jala.Mp3(mp3Filev2);
|
|
var tagv2 = mp3v2.createV2Tag();
|
|
tagv2.setArtist("v2 - jala.Mp3");
|
|
tagv2.setTitle("v2 - Test");
|
|
tagv2.setAlbum("v2 - Jala JavaScript Library");
|
|
tagv2.setGenre("Electronic");
|
|
tagv2.setComment("v2 - Play it loud!");
|
|
tagv2.setTrackNumber("2");
|
|
tagv2.setYear("2007");
|
|
tagv2.setAuthor("SP");
|
|
tagv2.setCopyright("ORF Online und Teletext GmbH");
|
|
tagv2.setUrl("http://www.orf.at/");
|
|
var imgFile = jala.Test.getTestFile("Mp3.test.jpg");
|
|
tagv2.setImage(3, "image/jpeg", imgFile.toByteArray());
|
|
mp3v2.save();
|
|
return;
|
|
};
|
|
|
|
|
|
/**
|
|
* Write a v1 tag to the file
|
|
*/
|
|
var testId3v1Write = function() {
|
|
var mp3 = new jala.Mp3(mp3FileNoTags);
|
|
assertFalse(mp3.hasV1Tag());
|
|
var tag = mp3.createV1Tag();
|
|
assertNotNull(tag);
|
|
tag.setArtist("v1 - jala.Mp3");
|
|
tag.setTitle("v1 - Test");
|
|
tag.setAlbum("v1 - Jala JavaScript Library");
|
|
tag.setGenre("Electronic");
|
|
tag.setComment("v1 - Play it loud!");
|
|
tag.setTrackNumber("1");
|
|
tag.setYear("2006");
|
|
assertTrue(mp3.hasV1Tag());
|
|
var oldsize = mp3.getSize();
|
|
mp3.save();
|
|
assertNotEqual(mp3.getSize(), oldsize);
|
|
return;
|
|
}
|
|
|
|
|
|
/**
|
|
* Read a v1 tag from the file
|
|
*/
|
|
var testId3v1Read = function() {
|
|
var mp3 = new jala.Mp3(mp3File);
|
|
tag = mp3.getV1Tag();
|
|
assertEqual(tag.getArtist(), "v1 - jala.Mp3");
|
|
assertEqual(tag.getTitle(), "v1 - Test");
|
|
assertEqual(tag.getAlbum(), "v1 - Jala JavaScript Library");
|
|
assertEqual(tag.getGenre(), "Electronic");
|
|
assertEqual(tag.getComment(), "v1 - Play it loud!");
|
|
assertEqual(tag.getTrackNumber(), "1");
|
|
assertEqual(tag.getYear(), "2006");
|
|
return;
|
|
};
|
|
|
|
|
|
/**
|
|
* Write a v2 tag to the file
|
|
*/
|
|
var testId3v2Write = function() {
|
|
var mp3 = new jala.Mp3(mp3FileNoTags);
|
|
assertFalse(mp3.hasV2Tag());
|
|
var tag = mp3.createV2Tag();
|
|
assertNotNull(tag);
|
|
tag.setArtist("v2 - jala.Mp3");
|
|
tag.setTitle("v2 - Test");
|
|
tag.setAlbum("v2 - Jala JavaScript Library");
|
|
tag.setGenre("Electronic");
|
|
tag.setComment("v2 - Play it loud!");
|
|
tag.setTrackNumber("2");
|
|
tag.setYear("2007");
|
|
|
|
tag.setAuthor("SP");
|
|
tag.setCopyright("ORF Online und Teletext GmbH");
|
|
tag.setUrl("http://www.orf.at/");
|
|
|
|
var imgFile = jala.Test.getTestFile("Mp3.test.jpg");
|
|
tag.setImage(3, "image/jpeg", imgFile.toByteArray());
|
|
|
|
var oldsize = mp3.getSize();
|
|
mp3.save();
|
|
assertNotEqual(mp3.getSize(), oldsize);
|
|
return;
|
|
}
|
|
|
|
|
|
/**
|
|
* Read a v2 tag from the file
|
|
*/
|
|
var testId3v2Read = function() {
|
|
var mp3 = new jala.Mp3(mp3Filev2);
|
|
var tag = mp3.getV2Tag();
|
|
assertEqual(tag.getArtist(), "v2 - jala.Mp3");
|
|
assertEqual(tag.getTitle(), "v2 - Test");
|
|
assertEqual(tag.getAlbum(), "v2 - Jala JavaScript Library");
|
|
assertEqual(tag.getGenre(), "Electronic");
|
|
assertEqual(tag.getComment(), "v2 - Play it loud!");
|
|
assertEqual(tag.getTrackNumber(), "2");
|
|
assertEqual(tag.getYear(), "2007");
|
|
|
|
assertEqual(tag.getAuthor(), "SP");
|
|
assertEqual(tag.getCopyright(), "ORF Online und Teletext GmbH");
|
|
assertEqual(tag.getUrl(), "http://www.orf.at/");
|
|
|
|
var mimeObj = tag.getImage();
|
|
var imgFile = jala.Test.getTestFile("Mp3.test.jpg");
|
|
assertEqual(mimeObj.contentLength, imgFile.getLength());
|
|
return;
|
|
};
|
|
|
|
|
|
/**
|
|
* A test of jala.Mp3
|
|
*/
|
|
var testMp3Read = function() {
|
|
var mp3 = new jala.Mp3(mp3Filev2);
|
|
assertEqual(mp3.artist, "v2 - jala.Mp3");
|
|
assertEqual(mp3.title, "v2 - Test");
|
|
assertEqual(mp3.album, "v2 - Jala JavaScript Library");
|
|
assertEqual(mp3.genre, "Electronic");
|
|
assertEqual(mp3.comment, "v2 - Play it loud!");
|
|
assertEqual(mp3.trackNumber, "2");
|
|
assertEqual(mp3.year, "2007");
|
|
|
|
assertEqual(mp3.getChannelMode(), "Stereo");
|
|
assertEqual(mp3.getBitRate(), 192);
|
|
assertEqual(mp3.getDuration(), 7);
|
|
assertEqual(mp3.getSize(), 173704); // This is after writing tags!
|
|
assertEqual(mp3.getFrequency(), 44.1);
|
|
assertEqual(mp3.parseDuration(), 7);
|
|
return;
|
|
};
|