72 lines
2.9 KiB
C#
72 lines
2.9 KiB
C#
using TeleWave.Application.Metadata;
|
|
using TeleWave.Domain.Library;
|
|
using Xunit;
|
|
|
|
namespace TeleWave.Application.Tests.Metadata;
|
|
|
|
public class ContentRatingTests
|
|
{
|
|
[Theory]
|
|
[InlineData("G", ShowAudience.G)]
|
|
[InlineData("PG", ShowAudience.Pg)]
|
|
[InlineData("PG-13", ShowAudience.Pg13)]
|
|
[InlineData("R", ShowAudience.R)]
|
|
[InlineData("NC-17", ShowAudience.Nc17)]
|
|
public void Parse_Mpaa(string value, ShowAudience expected) =>
|
|
Assert.Equal(expected, ContentRating.Parse(value));
|
|
|
|
[Theory]
|
|
[InlineData("TV-Y", ShowAudience.G)]
|
|
[InlineData("TV-Y7", ShowAudience.G)]
|
|
[InlineData("TV-G", ShowAudience.G)]
|
|
[InlineData("TV-PG", ShowAudience.Pg)]
|
|
[InlineData("TV-14", ShowAudience.Pg13)]
|
|
[InlineData("TV-MA", ShowAudience.R)]
|
|
public void Parse_TvGuidelines_MapsToNearest(string value, ShowAudience expected) =>
|
|
Assert.Equal(expected, ContentRating.Parse(value));
|
|
|
|
[Theory]
|
|
[InlineData("0+", ShowAudience.G)]
|
|
[InlineData("6+", ShowAudience.G)]
|
|
[InlineData("12+", ShowAudience.Pg)]
|
|
[InlineData("16+", ShowAudience.Pg13)]
|
|
[InlineData("18+", ShowAudience.R)]
|
|
public void Parse_RussianMarking_MapsApproximately(string value, ShowAudience expected) =>
|
|
Assert.Equal(expected, ContentRating.Parse(value));
|
|
|
|
[Theory]
|
|
[InlineData("M", ShowAudience.Pg)]
|
|
[InlineData("GP", ShowAudience.Pg)]
|
|
[InlineData("X", ShowAudience.Nc17)]
|
|
public void Parse_HistoricalCodes(string value, ShowAudience expected) =>
|
|
Assert.Equal(expected, ContentRating.Parse(value));
|
|
|
|
[Theory]
|
|
[InlineData("pg-13", ShowAudience.Pg13)]
|
|
[InlineData(" R ", ShowAudience.R)]
|
|
public void Parse_IgnoresCaseAndPadding(string value, ShowAudience expected) =>
|
|
Assert.Equal(expected, ContentRating.Parse(value));
|
|
|
|
[Theory]
|
|
[InlineData(null)]
|
|
[InlineData("")]
|
|
[InlineData(" ")]
|
|
[InlineData("N/A")]
|
|
[InlineData("Not Rated")]
|
|
[InlineData("Unrated")]
|
|
[InlineData("Approved")]
|
|
[InlineData("Passed")]
|
|
// Голые числа — это немецкая FSK и французская шкала, которых мы не поддерживаем: «16» там
|
|
// означает не то же, что российское «16+», и принимать их за него нельзя.
|
|
[InlineData("16")]
|
|
[InlineData("12")]
|
|
[InlineData("какая-то ерунда")]
|
|
public void Parse_UnknownOrAbsent_IsNull(string? value)
|
|
{
|
|
// Незнакомое значение не должно превращаться в догадку: по нему шоу попало бы в детский эфир
|
|
// непроверенным. Отдельно проверяем «Approved»/«Passed» — исторические пометки IMDb,
|
|
// означающие «цензуру прошёл», а не «подходит детям».
|
|
Assert.Null(ContentRating.Parse(value));
|
|
}
|
|
}
|