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

82 lines
2.5 KiB
Java

package net.sourceforge.filebot.similarity;
import static org.junit.Assert.*;
import net.sourceforge.filebot.similarity.SeriesNameMatcher.SeriesNameCollection;
import org.junit.Test;
public class SeriesNameMatcherTest {
private static SeriesNameMatcher matcher = new SeriesNameMatcher();
@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"));
// real world test
assertEquals("Mushishi", matcher.matchByEpisodeIdentifier("[niizk]_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("\\s");
String[] seq2 = "abc xyz Common Name 2 Any Title".split("\\s");
// 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"));
}
}