You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Lidarr/src/NzbDrone.Core.Test/ParserTests/QualityParserFixture.cs

134 lines
5.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Parser;
using NzbDrone.Core.Qualities;
using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.ParserTests
{
[TestFixture]
public class QualityParserFixture : CoreTest
{
public static object[] SelfQualityParserCases =
{
new object[] {Quality.MP3_192},
new object[] {Quality.MP3_VBR},
new object[] {Quality.MP3_256},
new object[] {Quality.MP3_320},
new object[] {Quality.MP3_512},
new object[] {Quality.FLAC},
};
[TestCase("VA - The Best 101 Love Ballads (2017) MP3 [192 kbps]")]
[TestCase("ATCQ - The Love Movement 1998 2CD 192kbps RIP")]
[TestCase("A Tribe Called Quest - The Love Movement 1998 2CD [192kbps] RIP")]
[TestCase("Maula - Jism 2 [2012] Mp3 - 192Kbps [Extended]- TK")]
[TestCase("VA - Complete Clubland - The Ultimate Ride Of Your Lfe [2014][MP3][192 kbps]")]
[TestCase("Complete Clubland - The Ultimate Ride Of Your Lfe [2014][MP3](192kbps)")]
[TestCase("The Ultimate Ride Of Your Lfe [192 KBPS][2014][MP3]")]
[TestCase("Gary Clark Jr - Live North America 2016 (2017) MP3 192kbps")]
[TestCase("Some Song [192][2014][MP3]")]
[TestCase("Other Song (192)[2014][MP3]")]
public void should_parse_mp3_192_quality(string title)
{
ParseAndVerifyQuality(title, Quality.MP3_192);
}
[TestCase("Beyoncé Lemonade [320] 2016 Beyonce Lemonade [320] 2016")]
[TestCase("Childish Gambino - Awaken, My Love Album 2016 mp3 320 Kbps")]
[TestCase("Maluma Felices Los 4 MP3 320 Kbps 2017 Download")]
[TestCase("Ricardo Arjona - APNEA (Single 2014) (320 kbps)")]
[TestCase("Kehlani - SweetSexySavage (Deluxe Edition) (2017) 320")]
[TestCase("Anderson Paak - Malibu (320)(2016)")]
public void should_parse_mp3_320_quality(string title)
{
ParseAndVerifyQuality(title, Quality.MP3_320);
}
[TestCase("Caetano Veloso Discografia Completa MP3 @256")]
[TestCase("Little Mix - Salute [Deluxe Edition] [2013] [M4A-256]-V3nom [GLT")]
[TestCase("Ricky Martin - A Quien Quiera Escuchar (2015) 256 kbps [GloDLS]")]
[TestCase("Jake Bugg - Jake Bugg (Album) [2012] {MP3 256 kbps}")]
[TestCase("Milky Chance - Sadnecessary [256 Kbps] [M4A]")]
[TestCase("Clean Bandit - New Eyes [2014] [Mp3-256]-V3nom [GLT]")]
[TestCase("Armin van Buuren - A State Of Trance 810 (20.04.2017) 256 kbps")]
[TestCase("PJ Harvey - Let England Shake [mp3-256-2011][trfkad]")]
[TestCase("X-Men Soundtracks (2006-2014) AAC, 256 kbps")]
[TestCase("Walk the Line Soundtrack (2005) [AAC, 256 kbps]")]
public void should_parse_mp3_256_quality(string title)
{
ParseAndVerifyQuality(title, Quality.MP3_256);
}
[TestCase("Caetano Veloso Discografia Completa MP3 @512")]
[TestCase("Walk the Line Soundtrack (2005) [AAC, 512 kbps]")]
[TestCase("Emeli Sande Next To Me (512 Kbps)")]
public void should_parse_mp3_512_quality(string title)
{
ParseAndVerifyQuality(title, Quality.MP3_512);
}
[TestCase("Kendrick Lamar - DAMN (2017) FLAC")]
[TestCase("Alicia Keys - Vault Playlist Vol. 1 (2017) [FLAC CD]")]
[TestCase("Gorillaz - Humanz (Deluxe) - lossless FLAC Tracks - 2017 - CDrip")]
[TestCase("David Bowie - Blackstar (2016) [FLAC]")]
[TestCase("The Cure - Greatest Hits (2001) FLAC Soup")]
[TestCase("Slowdive- Souvlaki (FLAC)")]
[TestCase("John Coltrane - Kulu Se Mama (1965) [EAC-FLAC]")]
[TestCase("The Rolling Stones - The Very Best Of '75-'94 (1995) {FLAC}")]
[TestCase("Migos-No_Label_II-CD-FLAC-2014-FORSAKEN")]
[TestCase("ADELE 25 CD FLAC 2015 PERFECT")]
public void should_parse_flac_quality(string title)
{
ParseAndVerifyQuality(title, Quality.FLAC);
}
// Flack doesn't get match for 'FLAC' quality
[TestCase("Roberta Flack 2006 - The Very Best of")]
public void should_not_parse_flac_quality(string title)
{
ParseAndVerifyQuality(title, Quality.Unknown);
}
[TestCase("The Chainsmokers & Coldplay - Something Just Like This")]
[TestCase("Frank Ocean Blonde 2016")]
[TestCase("A - NOW Thats What I Call Music 96 (2017) [Mp3~Kbps]")]
[TestCase("Queen - The Ultimate Best Of Queen(2011)[mp3]")]
[TestCase("Maroon 5 Ft Kendrick Lamar -Dont Wanna Know MP3 2016")]
public void quality_parse(string title)
{
ParseAndVerifyQuality(title, Quality.Unknown);
}
[Test, TestCaseSource(nameof(SelfQualityParserCases))]
public void parsing_our_own_quality_enum_name(Quality quality)
{
var fileName = string.Format("Some album [{0}]", quality.Name);
var result = QualityParser.ParseQuality(fileName);
result.Quality.Should().Be(quality);
}
[TestCase("Little Mix - Salute [Deluxe Edition] [2013] [M4A-256]-V3nom [GLT")]
public void should_parse_quality_from_name(string title)
{
QualityParser.ParseQuality(title).QualitySource.Should().Be(QualitySource.Name);
}
[TestCase("01. Kanye West - Ultralight Beam.mp3")]
[TestCase("01. Kanye West - Ultralight Beam.ogg")]
[TestCase("01. Kanye West - Ultralight Beam.m4a")]
public void should_parse_quality_from_extension(string title)
{
QualityParser.ParseQuality(title).QualitySource.Should().Be(QualitySource.Extension);
}
private void ParseAndVerifyQuality(string title, Quality quality)
{
var result = QualityParser.ParseQuality(title);
result.Quality.Should().Be(quality);
}
}
}