/* * PS3 Media Server, for streaming any medias to your PS3. * Copyright (C) 2012 I. Sokolov * * 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.formats.v2; import org.junit.Test; import java.util.Arrays; import java.util.HashSet; import java.util.Set; import static net.pms.formats.v2.SubtitleType.*; import static org.fest.assertions.Assertions.assertThat; public class SubtitleTypeTest { @Test public void testValueOfFileExtension_matchingExtensions() throws Exception { assertThat(valueOfFileExtension("srt")).isEqualTo(SUBRIP); assertThat(valueOfFileExtension("txt")).isEqualTo(TEXT); assertThat(valueOfFileExtension("sub")).isEqualTo(MICRODVD); assertThat(valueOfFileExtension("smi")).isEqualTo(SAMI); assertThat(valueOfFileExtension("ssa")).isEqualTo(ASS); assertThat(valueOfFileExtension("ass")).isEqualTo(ASS); assertThat(valueOfFileExtension("idx")).isEqualTo(VOBSUB); } @Test public void testValueOfLibMediaInfoCodec_matchingCodecs() throws Exception { assertThat(valueOfLibMediaInfoCodec("s_utf8")).isEqualTo(SUBRIP); assertThat(valueOfLibMediaInfoCodec("S_TEXT/UTF8")).isEqualTo(SUBRIP); assertThat(valueOfLibMediaInfoCodec("Subrip")).isEqualTo(SUBRIP); assertThat(valueOfLibMediaInfoCodec("s_ssa")).isEqualTo(ASS); assertThat(valueOfLibMediaInfoCodec("s_ass")).isEqualTo(ASS); assertThat(valueOfLibMediaInfoCodec("S_TEXT/SSA")).isEqualTo(ASS); assertThat(valueOfLibMediaInfoCodec("S_TEXT/ASS")).isEqualTo(ASS); assertThat(valueOfLibMediaInfoCodec("SSA")).isEqualTo(ASS); assertThat(valueOfLibMediaInfoCodec("ASS")).isEqualTo(ASS); assertThat(valueOfLibMediaInfoCodec("subp")).isEqualTo(VOBSUB); assertThat(valueOfLibMediaInfoCodec("S_VOBSUB")).isEqualTo(VOBSUB); assertThat(valueOfLibMediaInfoCodec("mp4s")).isEqualTo(VOBSUB); assertThat(valueOfLibMediaInfoCodec("E0")).isEqualTo(VOBSUB); assertThat(valueOfLibMediaInfoCodec("s_usf")).isEqualTo(USF); assertThat(valueOfLibMediaInfoCodec("S_TEXT/USF")).isEqualTo(USF); assertThat(valueOfLibMediaInfoCodec("S_IMAGE/BMP")).isEqualTo(BMP); assertThat(valueOfLibMediaInfoCodec("DXSB")).isEqualTo(DIVX); assertThat(valueOfLibMediaInfoCodec("tx3g")).isEqualTo(TX3G); assertThat(valueOfLibMediaInfoCodec("pgs")).isEqualTo(PGS); assertThat(valueOfLibMediaInfoCodec("S_HDMV/PGS")).isEqualTo(PGS); assertThat(valueOfLibMediaInfoCodec("144")).isEqualTo(PGS); } @Test public void testGetDescription() throws Exception { assertThat(UNKNOWN.getDescription()).isEqualTo("Generic"); assertThat(UNSUPPORTED.getDescription()).isEqualTo("Unsupported"); assertThat(SUBRIP.getDescription()).isEqualTo("SubRip"); assertThat(TEXT.getDescription()).isEqualTo("Text file"); assertThat(MICRODVD.getDescription()).isEqualTo("MicroDVD"); assertThat(SAMI.getDescription()).isEqualTo("SAMI"); assertThat(ASS.getDescription()).isEqualTo("(Advanced) SubStation Alpha"); assertThat(VOBSUB.getDescription()).isEqualTo("VobSub"); assertThat(USF.getDescription()).isEqualTo("Universal Subtitle Format"); assertThat(BMP.getDescription()).isEqualTo("BMP"); assertThat(DIVX.getDescription()).isEqualTo("DIVX subtitles"); assertThat(TX3G.getDescription()).isEqualTo("Timed text (TX3G)"); assertThat(PGS.getDescription()).isEqualTo("Blu-ray subtitles"); } @Test public void testGetExtension() throws Exception { assertThat(UNKNOWN.getExtension()).isEqualTo(""); assertThat(SUBRIP.getExtension()).isEqualTo("srt"); assertThat(TEXT.getExtension()).isEqualTo("txt"); assertThat(MICRODVD.getExtension()).isEqualTo("sub"); assertThat(SAMI.getExtension()).isEqualTo("smi"); assertThat(ASS.getExtension()).isEqualTo("ass"); assertThat(VOBSUB.getExtension()).isEqualTo("idx"); assertThat(UNSUPPORTED.getExtension()).isEqualTo(""); } @Test public void testValueOfFileExtension_nullOrBlankExtension() throws Exception { assertThat(valueOfFileExtension(null)).isEqualTo(UNKNOWN); assertThat(valueOfFileExtension("")).isEqualTo(UNKNOWN); } @Test public void testValueOfLibMediaInfoCodec_nullOrBlankCodec() throws Exception { assertThat(valueOfLibMediaInfoCodec(null)).isEqualTo(UNKNOWN); assertThat(valueOfLibMediaInfoCodec("")).isEqualTo(UNKNOWN); } @Test public void testValueOfFileExtension_unknownExtension() throws Exception { assertThat(valueOfFileExtension("xyz")).isEqualTo(UNKNOWN); } @Test public void testValueOfLibMediaInfoCodec_unknownCodec() throws Exception { assertThat(valueOfLibMediaInfoCodec("xyz")).isEqualTo(UNKNOWN); } @Test public void testValueOfFileExtension_extensionCaseInsensitivity() throws Exception { assertThat(valueOfFileExtension("ssA")).isEqualTo(ASS); assertThat(valueOfFileExtension("SSA")).isEqualTo(ASS); assertThat(valueOfFileExtension("sSa")).isEqualTo(ASS); } @Test public void testValueOfLibMediaInfoCodec_CodecInsensitivity() throws Exception { assertThat(valueOfLibMediaInfoCodec("s_TeXT/UtF8")).isEqualTo(SUBRIP); } @Test public void testValueOfLibMediaInfoCodec_CodecWithExtraSpaces() throws Exception { assertThat(valueOfLibMediaInfoCodec("s_utf8 ")).isEqualTo(SUBRIP); assertThat(valueOfLibMediaInfoCodec(" s_utf8")).isEqualTo(SUBRIP); assertThat(valueOfLibMediaInfoCodec(" s_utf8 ")).isEqualTo(SUBRIP); } @Test public void testValueOfLibMediaInfoCodec_SubstringShouldNotMatch() throws Exception { assertThat(valueOfLibMediaInfoCodec("S_TEXT/SSA2")).isEqualTo(UNKNOWN); assertThat(valueOfLibMediaInfoCodec("ps_utf8")).isEqualTo(UNKNOWN); } @Test public void getSupportedFileExtensions() { Set<String> expectedExtensionsSet = new HashSet<String>(Arrays.asList("srt", "txt", "sub", "smi", "ssa", "ass", "idx")); assertThat(SubtitleType.getSupportedFileExtensions()).isEqualTo(expectedExtensionsSet); } @Test public void testGetStableIndex() { assertThat(UNKNOWN.getStableIndex()).isEqualTo(0); assertThat(SUBRIP.getStableIndex()).isEqualTo(1); assertThat(TEXT.getStableIndex()).isEqualTo(2); assertThat(MICRODVD.getStableIndex()).isEqualTo(3); assertThat(SAMI.getStableIndex()).isEqualTo(4); assertThat(ASS.getStableIndex()).isEqualTo(5); assertThat(VOBSUB.getStableIndex()).isEqualTo(6); assertThat(UNSUPPORTED.getStableIndex()).isEqualTo(7); assertThat(USF.getStableIndex()).isEqualTo(8); assertThat(BMP.getStableIndex()).isEqualTo(9); assertThat(DIVX.getStableIndex()).isEqualTo(10); assertThat(TX3G.getStableIndex()).isEqualTo(11); assertThat(PGS.getStableIndex()).isEqualTo(12); } @Test public void testGetStableIndex_uniqueness() { Set<Integer> stableIndexes = new HashSet<Integer>(); for (SubtitleType subtitleType : values()) { assertThat(stableIndexes.contains(subtitleType.getStableIndex())).isFalse(); stableIndexes.add(subtitleType.getStableIndex()); } } @Test public void testValueOfStableIndex() { assertThat(valueOfStableIndex(0)).isEqualTo(UNKNOWN); assertThat(valueOfStableIndex(1)).isEqualTo(SUBRIP); assertThat(valueOfStableIndex(2)).isEqualTo(TEXT); assertThat(valueOfStableIndex(3)).isEqualTo(MICRODVD); assertThat(valueOfStableIndex(4)).isEqualTo(SAMI); assertThat(valueOfStableIndex(5)).isEqualTo(ASS); assertThat(valueOfStableIndex(6)).isEqualTo(VOBSUB); assertThat(valueOfStableIndex(7)).isEqualTo(UNSUPPORTED); assertThat(valueOfStableIndex(8)).isEqualTo(USF); assertThat(valueOfStableIndex(9)).isEqualTo(BMP); assertThat(valueOfStableIndex(10)).isEqualTo(DIVX); assertThat(valueOfStableIndex(11)).isEqualTo(TX3G); assertThat(valueOfStableIndex(12)).isEqualTo(PGS); } @Test public void testValueOfStableIndex_unknownIndex() { assertThat(valueOfStableIndex(-1)).isEqualTo(UNKNOWN); assertThat(valueOfStableIndex(456)).isEqualTo(UNKNOWN); } }