package net.filebot.similarity; import static org.junit.Assert.*; import java.util.Locale; import net.filebot.similarity.SeriesNameMatcher.SeriesNameCollection; import org.junit.Test; public class SeriesNameMatcherTest { private static SeriesNameMatcher matcher = new SeriesNameMatcher(Locale.ENGLISH, true); @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")); } }