filebot/test/net/filebot/similarity/SeriesNameMatcherTest.java

75 lines
2.6 KiB
Java

package net.filebot.similarity;
import static org.junit.Assert.*;
import java.util.Locale;
import org.junit.Test;
import net.filebot.media.SmartSeasonEpisodeMatcher;
import net.filebot.similarity.SeriesNameMatcher.SeriesNameCollection;
public class SeriesNameMatcherTest {
SeriesNameMatcher matcher = new SeriesNameMatcher(new SmartSeasonEpisodeMatcher(SeasonEpisodeMatcher.DEFAULT_SANITY, true), new DateMatcher(DateMatcher.DEFAULT_SANITY, Locale.ENGLISH));
@Test
public void whitelist() {
// ignore recurring word sequences when matching episode patterns
String[] names = new String[] { "Test 101 - 01", "Test 101 - 02" };
assertArrayEquals(new String[] { "Test 101" }, matcher.matchAll(names).toArray());
}
@Test
public void threshold() {
// ignore recurring word sequences when matching episode patterns
String[] names = new String[] { "Test 1 of 101", "Test 2 of 101", "Test 3 of 101" };
assertArrayEquals(new String[] { "Test" }, matcher.matchAll(names).toArray());
}
@Test
public void matchBeforeSeasonEpisodePattern() {
assertEquals("The Test", matcher.matchByEpisodeIdentifier("The Test - 1x01"));
assertEquals("Mushishi", matcher.matchByEpisodeIdentifier("Mushishi_-_1x01_-_The_Green_Gathering"));
}
@Test
public void normalize() {
// non-letter and non-digit characters
assertEquals("The Test", matcher.normalize("_The_Test_-_ ..."));
// brackets
assertEquals("Luffy", matcher.normalize("[strawhat] Luffy (D.) [#Monkey]"));
// invalid brackets
assertEquals("strawhat Luffy", matcher.normalize("(strawhat [Luffy (#Monkey)"));
}
@Test
public void firstCommonSequence() {
String[] seq1 = "Common Name 1 Any Title".split(" ");
String[] seq2 = "abc xyz Common Name 2 Any Title".split(" ");
// check if common sequence can be determined
assertArrayEquals(new String[] { "Common", "Name" }, matcher.firstCommonSequence(seq1, seq2, 2, String.CASE_INSENSITIVE_ORDER));
// check if max start index is working
assertArrayEquals(null, matcher.firstCommonSequence(seq1, seq2, 0, String.CASE_INSENSITIVE_ORDER));
assertArrayEquals(null, matcher.firstCommonSequence(seq2, seq1, 1, String.CASE_INSENSITIVE_ORDER));
}
@Test
public void firstCharacterCaseBalance() {
SeriesNameCollection n = new SeriesNameCollection();
assertTrue(n.firstCharacterCaseBalance("My Name is Earl") > n.firstCharacterCaseBalance("My Name Is Earl"));
assertTrue(n.firstCharacterCaseBalance("My Name is Earl") > n.firstCharacterCaseBalance("my name is earl"));
// boost upper case ration
assertTrue(n.firstCharacterCaseBalance("Roswell") > n.firstCharacterCaseBalance("roswell"));
}
}