/*
* PS3 Media Server, for streaming any medias to your PS3.
* Copyright (C) 2008 A.Brochard
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; version 2
* of the License only.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package net.pms.test.formats;
import static org.junit.Assert.assertEquals;
import net.pms.formats.DVRMS;
import net.pms.formats.FLAC;
import net.pms.formats.Format;
import net.pms.formats.GIF;
import net.pms.formats.ISO;
import net.pms.formats.JPG;
import net.pms.formats.M4A;
import net.pms.formats.MKV;
import net.pms.formats.MP3;
import net.pms.formats.MPG;
import net.pms.formats.OGG;
import net.pms.formats.PNG;
import net.pms.formats.RAW;
import net.pms.formats.TIF;
import net.pms.formats.WAV;
import net.pms.formats.WEB;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.LoggerContext;
/**
* Test basic functionality of {@link Format}.
*/
public class FormatTest {
@Before
public void setUp() {
// Silence all log messages from the PMS code that is being tested
LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
context.reset();
}
/**
* Test edge cases for {@link Format#match(String)}.
*/
@Test
public void testFormatEdgeCases() {
// Empty string
assertEquals("MP3 does not match \"\"", false, new MP3().match(""));
// Null string
assertEquals("MP3 does not match null", false, new MP3().match(null));
// Mixed case
assertEquals("TIFF matches \"tEsT.TiFf\"", true, new TIF().match("tEsT.TiFf"));
// Starting with identifier instead of ending
assertEquals("TIFF does not match \"tiff.test\"", false, new TIF().match("tiff.test"));
// Substring
assertEquals("TIFF does not match \"not.tiff.but.mp3\"", false, new TIF().match("not.tiff.but.mp3"));
}
/**
* Test if {@link Format#match(String)} manages to match the identifiers
* specified in each format with getId().
*/
@Test
public void testFormatIdentifiers() {
// Identifier tests based on the identifiers defined in getId() of each class
assertEquals("DVRMS matches \"test.dvr\"", true, new DVRMS().match("test.dvr"));
assertEquals("FLAC matches \"test.flac\"", true, new FLAC().match("test.flac"));
assertEquals("GIF matches \"test.gif\"", true, new GIF().match("test.gif"));
assertEquals("ISO matches \"test.iso\"", true, new ISO().match("test.iso"));
assertEquals("JPG matches \"test.jpg\"", true, new JPG().match("test.jpg"));
assertEquals("M4A matches \"test.wma\"", true, new M4A().match("test.wma"));
assertEquals("MKV matches \"test.mkv\"", true, new MKV().match("test.mkv"));
assertEquals("MP3 matches \"test.mp3\"", true, new MP3().match("test.mp3"));
assertEquals("MPG matches \"test.mpg\"", true, new MPG().match("test.mpg"));
assertEquals("OGG matches \"test.ogg\"", true, new OGG().match("test.ogg"));
assertEquals("PNG matches \"test.png\"", true, new PNG().match("test.png"));
assertEquals("RAW matches \"test.arw\"", true, new RAW().match("test.arw"));
assertEquals("TIF matches \"test.tiff\"", true, new TIF().match("test.tiff"));
assertEquals("WAV matches \"test.wav\"", true, new WAV().match("test.wav"));
assertEquals("WEB matches \"http\"", true, new WEB().match("http://test.org/"));
}
}