Code view:

A painting is a person's account of this edit as text, recorded independently of the node mapping - a rendering often has several equally defensible answers where the mapping has one. Deletions and insertions carry no position on the opposite side in a painting, so that panel draws no caret for them.

Before

…lines 1–163 unchanged (163 lines)
164 _remoteEpisode.Release.Title = releaseTitle;
165
166 Subject.Aggregate(_remoteEpisode).Languages.Should().BeEquivalentTo(new List<Language> { _series.OriginalLanguage, Language.French });
167 Mocker.GetMock<IIndexerFactory>().Verify(c => c.Find(1), Times.Once());
168 Mocker.GetMock<IIndexerFactory>().VerifyNoOtherCalls();
169 }
170
171 [Test]
172 public void should_return_original_when_indexer_has_no_multi_languages_configuration()
173 {
174 var releaseTitle = "Series.Title.S01E01.MULTi.1080p.WEB.H265-RlsGroup";
175 var indexerDefinition = new IndexerDefinition
176 {
…lines 177–334 unchanged (158 lines)

After

…lines 1–164 unchanged (164 lines)
165
166 Subject.Aggregate(_remoteEpisode).Languages.Should().BeEquivalentTo(new List<Language> { _series.OriginalLanguage, Language.French });
167 Mocker.GetMock<IIndexerFactory>().Verify(c => c.Find(1), Times.Once());
168 Mocker.GetMock<IIndexerFactory>().VerifyNoOtherCalls();
169 }
170
171 [Test]
172 public void should_return_multi_languages_when_release_as_specified_language_and_indexer_has_multi_languages_configuration()
173 {
174 var releaseTitle = "Series.Title.S01E01.MULTi.VFF.VFQ.1080p.BluRay.DTS.HDMA.x264-RlsGroup";
175 var indexerDefinition = new IndexerDefinition
176 {
177 Id = 1,
178 Settings = new TorrentRssIndexerSettings { MultiLanguages = new List<int> { Language.Original.Id, Language.French.Id } }
179 };
180 Mocker.GetMock<IIndexerFactory>()
181 .Setup(v => v.Find(1))
182 .Returns(indexerDefinition);
183
184 _remoteEpisode.ParsedEpisodeInfo = GetParsedEpisodeInfo(new List<Language> { Language.French }, releaseTitle);
185 _remoteEpisode.Release.IndexerId = 1;
186 _remoteEpisode.Release.Title = releaseTitle;
187
188 Subject.Aggregate(_remoteEpisode).Languages.Should().BeEquivalentTo(new List<Language> { _series.OriginalLanguage, Language.French });
189 Mocker.GetMock<IIndexerFactory>().Verify(c => c.Find(1), Times.Once());
190 Mocker.GetMock<IIndexerFactory>().VerifyNoOtherCalls();
191 }
192
193 [Test]
194 public void should_return_multi_languages_when_release_as_other_language_and_indexer_has_multi_languages_configuration()
195 {
196 var releaseTitle = "Series.Title.S01E01.MULTi.GERMAN.1080p.BluRay.DTS.HDMA.x264-RlsGroup";
197 var indexerDefinition = new IndexerDefinition
198 {
199 Id = 1,
200 Settings = new TorrentRssIndexerSettings { MultiLanguages = new List<int> { Language.Original.Id, Language.French.Id } }
201 };
202 Mocker.GetMock<IIndexerFactory>()
203 .Setup(v => v.Find(1))
204 .Returns(indexerDefinition);
205
206 _remoteEpisode.ParsedEpisodeInfo = GetParsedEpisodeInfo(new List<Language> { Language.German }, releaseTitle);
207 _remoteEpisode.Release.IndexerId = 1;
208 _remoteEpisode.Release.Title = releaseTitle;
209
210 Subject.Aggregate(_remoteEpisode).Languages.Should().BeEquivalentTo(new List<Language> { _series.OriginalLanguage, Language.French, Language.German });
211 Mocker.GetMock<IIndexerFactory>().Verify(c => c.Find(1), Times.Once());
212 Mocker.GetMock<IIndexerFactory>().VerifyNoOtherCalls();
213 }
214
215 [Test]
216 public void should_return_original_when_indexer_has_no_multi_languages_configuration()
217 {
218 var releaseTitle = "Series.Title.S01E01.MULTi.1080p.WEB.H265-RlsGroup";
219 var indexerDefinition = new IndexerDefinition
…lines 220–378 unchanged (159 lines)

Before

compilation_unit
using_directive
using "using"
qualified_name
qualified_name
identifier "System"
. "."
identifier "Collections"
. "."
identifier "Generic"
; ";"
using_directive
using "using"
qualified_name
identifier "System"
. "."
identifier "Linq"
; ";"
using_directive
using "using"
qualified_name
identifier "FizzWare"
. "."
identifier "NBuilder"
; ";"
using_directive
using "using"
identifier "FluentAssertions"
; ";"
using_directive
using "using"
identifier "Moq"
; ";"
using_directive
using "using"
qualified_name
identifier "NUnit"
. "."
identifier "Framework"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "Download"
. "."
identifier "Aggregation"
. "."
identifier "Aggregators"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "Indexers"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "Indexers"
. "."
identifier "TorrentRss"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "Languages"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "Parser"
. "."
identifier "Model"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "Test"
. "."
identifier "Framework"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "Tv"
; ";"
namespace_declaration
namespace "namespace"
qualified_name
qualified_name
qualified_name
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "Test"
. "."
identifier "Download"
. "."
identifier "Aggregation"
. "."
identifier "Aggregators"
declaration_list
{ "{"
class_declaration
attribute_list
[ "["
attribute
identifier "TestFixture"
] "]"
modifier
public "public"
class "class"
identifier "AggregateLanguagesFixture"
base_list
: ":"
generic_name
identifier "CoreTest"
type_argument_list
< "<"
identifier "AggregateLanguages"
> ">"
declaration_list
{ "{"
field_declaration
modifier
private "private"
variable_declaration
identifier "RemoteEpisode"
variable_declarator
identifier "_remoteEpisode"
; ";"
field_declaration
modifier
private "private"
variable_declaration
identifier "Series"
variable_declarator
identifier "_series"
; ";"
field_declaration
modifier
private "private"
variable_declaration
predefined_type "string"
variable_declarator
identifier "_simpleReleaseTitle"
= "="
string_literal
" "\""
string_literal_content "Series.Title.S01E01.xyz-RlsGroup"
" "\""
; ";"
method_declaration (+194 nodes collapsed)
method_declaration (+54 nodes collapsed)
method_declaration (+82 nodes collapsed)
method_declaration (+85 nodes collapsed)
method_declaration (+300 nodes collapsed)
method_declaration (+447 nodes collapsed)
method_declaration (+317 nodes collapsed)
method_declaration (+304 nodes collapsed)
method_declaration (+266 nodes collapsed)
method_declaration (+135 nodes collapsed)
method_declaration (+131 nodes collapsed)
method_declaration (+136 nodes collapsed)
method_declaration (+131 nodes collapsed)
method_declaration (+131 nodes collapsed)
method_declaration (+547 nodes collapsed)
method_declaration (+547 nodes collapsed)
} "}"
} "}"

After

compilation_unit
using_directive
using "using"
qualified_name
qualified_name
identifier "System"
. "."
identifier "Collections"
. "."
identifier "Generic"
; ";"
using_directive
using "using"
qualified_name
identifier "System"
. "."
identifier "Linq"
; ";"
using_directive
using "using"
qualified_name
identifier "FizzWare"
. "."
identifier "NBuilder"
; ";"
using_directive
using "using"
identifier "FluentAssertions"
; ";"
using_directive
using "using"
identifier "Moq"
; ";"
using_directive
using "using"
qualified_name
identifier "NUnit"
. "."
identifier "Framework"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "Download"
. "."
identifier "Aggregation"
. "."
identifier "Aggregators"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "Indexers"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "Indexers"
. "."
identifier "TorrentRss"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "Languages"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "Parser"
. "."
identifier "Model"
; ";"
using_directive
using "using"
qualified_name
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "Test"
. "."
identifier "Framework"
; ";"
using_directive
using "using"
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "Tv"
; ";"
namespace_declaration
namespace "namespace"
qualified_name
qualified_name
qualified_name
qualified_name
qualified_name
identifier "NzbDrone"
. "."
identifier "Core"
. "."
identifier "Test"
. "."
identifier "Download"
. "."
identifier "Aggregation"
. "."
identifier "Aggregators"
declaration_list
{ "{"
class_declaration
attribute_list
[ "["
attribute
identifier "TestFixture"
] "]"
modifier
public "public"
class "class"
identifier "AggregateLanguagesFixture"
base_list
: ":"
generic_name
identifier "CoreTest"
type_argument_list
< "<"
identifier "AggregateLanguages"
> ">"
declaration_list
{ "{"
field_declaration
modifier
private "private"
variable_declaration
identifier "RemoteEpisode"
variable_declarator
identifier "_remoteEpisode"
; ";"
field_declaration
modifier
private "private"
variable_declaration
identifier "Series"
variable_declarator
identifier "_series"
; ";"
field_declaration
modifier
private "private"
variable_declaration
predefined_type "string"
variable_declarator
identifier "_simpleReleaseTitle"
= "="
string_literal
" "\""
string_literal_content "Series.Title.S01E01.xyz-RlsGroup"
" "\""
; ";"
method_declaration (+194 nodes collapsed)
method_declaration (+54 nodes collapsed)
method_declaration (+82 nodes collapsed)
method_declaration (+85 nodes collapsed)
method_declaration (+300 nodes collapsed)
method_declaration (+447 nodes collapsed)
method_declaration (+317 nodes collapsed)
method_declaration (+304 nodes collapsed)
method_declaration
attribute_list
[ "["
attribute
identifier "Test"
] "]"
modifier
public "public"
predefined_type "void"
identifier "should_return_multi_languages_when_release_as_specified_lang"...
parameter_list
( "("
) ")"
block
{ "{"
local_declaration_statement
variable_declaration
implicit_type
var "var"
variable_declarator
identifier "releaseTitle"
= "="
string_literal
" "\""
string_literal_content "Series.Title.S01E01.MULTi.VFF.VFQ.1080p.BluRay.DTS.HDMA.x264"...
" "\""
; ";"
local_declaration_statement
variable_declaration
implicit_type
var "var"
variable_declarator
identifier "indexerDefinition"
= "="
object_creation_expression
new "new"
identifier "IndexerDefinition"
initializer_expression
{ "{"
assignment_expression
identifier "Id"
= "="
integer_literal "1"
, ","
assignment_expression
identifier "Settings"
= "="
object_creation_expression
new "new"
identifier "TorrentRssIndexerSettings"
initializer_expression
{ "{"
assignment_expression
identifier "MultiLanguages"
= "="
object_creation_expression
new "new"
generic_name
identifier "List"
type_argument_list
< "<"
predefined_type "int"
> ">"
initializer_expression
{ "{"
member_access_expression
member_access_expression
identifier "Language"
. "."
identifier "Original"
. "."
identifier "Id"
, ","
member_access_expression
member_access_expression
identifier "Language"
. "."
identifier "French"
. "."
identifier "Id"
} "}"
} "}"
} "}"
; ";"
expression_statement
invocation_expression
member_access_expression
invocation_expression
member_access_expression
invocation_expression
member_access_expression
identifier "Mocker"
. "."
generic_name
identifier "GetMock"
type_argument_list
< "<"
identifier "IIndexerFactory"
> ">"
argument_list
( "("
) ")"
. "."
identifier "Setup"
argument_list
( "("
argument
lambda_expression
implicit_parameter "v"
=> "=>"
invocation_expression
member_access_expression
identifier "v"
. "."
identifier "Find"
argument_list
( "("
argument
integer_literal "1"
) ")"
) ")"
. "."
identifier "Returns"
argument_list
( "("
argument
identifier "indexerDefinition"
) ")"
; ";"
expression_statement
assignment_expression
member_access_expression
identifier "_remoteEpisode"
. "."
identifier "ParsedEpisodeInfo"
= "="
invocation_expression
identifier "GetParsedEpisodeInfo"
argument_list
( "("
argument
object_creation_expression
new "new"
generic_name
identifier "List"
type_argument_list
< "<"
identifier "Language"
> ">"
initializer_expression
{ "{"
member_access_expression
identifier "Language"
. "."
identifier "French"
} "}"
, ","
argument
identifier "releaseTitle"
) ")"
; ";"
expression_statement
assignment_expression
member_access_expression
member_access_expression
identifier "_remoteEpisode"
. "."
identifier "Release"
. "."
identifier "IndexerId"
= "="
integer_literal "1"
; ";"
expression_statement
assignment_expression
member_access_expression
member_access_expression
identifier "_remoteEpisode"
. "."
identifier "Release"
. "."
identifier "Title"
= "="
identifier "releaseTitle"
; ";"
expression_statement
invocation_expression
member_access_expression
invocation_expression
member_access_expression
member_access_expression
invocation_expression
member_access_expression
identifier "Subject"
. "."
identifier "Aggregate"
argument_list
( "("
argument
identifier "_remoteEpisode"
) ")"
. "."
identifier "Languages"
. "."
identifier "Should"
argument_list
( "("
) ")"
. "."
identifier "BeEquivalentTo"
argument_list
( "("
argument
object_creation_expression
new "new"
generic_name
identifier "List"
type_argument_list
< "<"
identifier "Language"
> ">"
initializer_expression
{ "{"
member_access_expression
identifier "_series"
. "."
identifier "OriginalLanguage"
, ","
member_access_expression
identifier "Language"
. "."
identifier "French"
} "}"
) ")"
; ";"
expression_statement
invocation_expression
member_access_expression
invocation_expression
member_access_expression
identifier "Mocker"
. "."
generic_name
identifier "GetMock"
type_argument_list
< "<"
identifier "IIndexerFactory"
> ">"
argument_list
( "("
) ")"
. "."
identifier "Verify"
argument_list
( "("
argument
lambda_expression
implicit_parameter "c"
=> "=>"
invocation_expression
member_access_expression
identifier "c"
. "."
identifier "Find"
argument_list
( "("
argument
integer_literal "1"
) ")"
, ","
argument
invocation_expression
member_access_expression
identifier "Times"
. "."
identifier "Once"
argument_list
( "("
) ")"
) ")"
; ";"
expression_statement
invocation_expression
member_access_expression
invocation_expression
member_access_expression
identifier "Mocker"
. "."
generic_name
identifier "GetMock"
type_argument_list
< "<"
identifier "IIndexerFactory"
> ">"
argument_list
( "("
) ")"
. "."
identifier "VerifyNoOtherCalls"
argument_list
( "("
) ")"
; ";"
} "}"
method_declaration
attribute_list
[ "["
attribute
identifier "Test"
] "]"
modifier
public "public"
predefined_type "void"
identifier "should_return_multi_languages_when_release_as_other_language"...
parameter_list
( "("
) ")"
block
{ "{"
local_declaration_statement
variable_declaration
implicit_type
var "var"
variable_declarator
identifier "releaseTitle"
= "="
string_literal
" "\""
string_literal_content "Series.Title.S01E01.MULTi.GERMAN.1080p.BluRay.DTS.HDMA.x264-"...
" "\""
; ";"
local_declaration_statement
variable_declaration
implicit_type
var "var"
variable_declarator
identifier "indexerDefinition"
= "="
object_creation_expression
new "new"
identifier "IndexerDefinition"
initializer_expression
{ "{"
assignment_expression
identifier "Id"
= "="
integer_literal "1"
, ","
assignment_expression
identifier "Settings"
= "="
object_creation_expression
new "new"
identifier "TorrentRssIndexerSettings"
initializer_expression
{ "{"
assignment_expression
identifier "MultiLanguages"
= "="
object_creation_expression
new "new"
generic_name
identifier "List"
type_argument_list
< "<"
predefined_type "int"
> ">"
initializer_expression
{ "{"
member_access_expression
member_access_expression
identifier "Language"
. "."
identifier "Original"
. "."
identifier "Id"
, ","
member_access_expression
member_access_expression
identifier "Language"
. "."
identifier "French"
. "."
identifier "Id"
} "}"
} "}"
} "}"
; ";"
expression_statement
invocation_expression
member_access_expression
invocation_expression
member_access_expression
invocation_expression
member_access_expression
identifier "Mocker"
. "."
generic_name
identifier "GetMock"
type_argument_list
< "<"
identifier "IIndexerFactory"
> ">"
argument_list
( "("
) ")"
. "."
identifier "Setup"
argument_list
( "("
argument
lambda_expression
implicit_parameter "v"
=> "=>"
invocation_expression
member_access_expression
identifier "v"
. "."
identifier "Find"
argument_list
( "("
argument
integer_literal "1"
) ")"
) ")"
. "."
identifier "Returns"
argument_list
( "("
argument
identifier "indexerDefinition"
) ")"
; ";"
expression_statement
assignment_expression
member_access_expression
identifier "_remoteEpisode"
. "."
identifier "ParsedEpisodeInfo"
= "="
invocation_expression
identifier "GetParsedEpisodeInfo"
argument_list
( "("
argument
object_creation_expression
new "new"
generic_name
identifier "List"
type_argument_list
< "<"
identifier "Language"
> ">"
initializer_expression
{ "{"
member_access_expression
identifier "Language"
. "."
identifier "German"
} "}"
, ","
argument
identifier "releaseTitle"
) ")"
; ";"
expression_statement
assignment_expression
member_access_expression
member_access_expression
identifier "_remoteEpisode"
. "."
identifier "Release"
. "."
identifier "IndexerId"
= "="
integer_literal "1"
; ";"
expression_statement
assignment_expression
member_access_expression
member_access_expression
identifier "_remoteEpisode"
. "."
identifier "Release"
. "."
identifier "Title"
= "="
identifier "releaseTitle"
; ";"
expression_statement
invocation_expression
member_access_expression
invocation_expression
member_access_expression
member_access_expression
invocation_expression
member_access_expression
identifier "Subject"
. "."
identifier "Aggregate"
argument_list
( "("
argument
identifier "_remoteEpisode"
) ")"
. "."
identifier "Languages"
. "."
identifier "Should"
argument_list
( "("
) ")"
. "."
identifier "BeEquivalentTo"
argument_list
( "("
argument
object_creation_expression
new "new"
generic_name
identifier "List"
type_argument_list
< "<"
identifier "Language"
> ">"
initializer_expression
{ "{"
member_access_expression
identifier "_series"
. "."
identifier "OriginalLanguage"
, ","
member_access_expression
identifier "Language"
. "."
identifier "French"
, ","
member_access_expression
identifier "Language"
. "."
identifier "German"
} "}"
) ")"
; ";"
expression_statement
invocation_expression
member_access_expression
invocation_expression
member_access_expression
identifier "Mocker"
. "."
generic_name
identifier "GetMock"
type_argument_list
< "<"
identifier "IIndexerFactory"
> ">"
argument_list
( "("
) ")"
. "."
identifier "Verify"
argument_list
( "("
argument
lambda_expression
implicit_parameter "c"
=> "=>"
invocation_expression
member_access_expression
identifier "c"
. "."
identifier "Find"
argument_list
( "("
argument
integer_literal "1"
) ")"
, ","
argument
invocation_expression
member_access_expression
identifier "Times"
. "."
identifier "Once"
argument_list
( "("
) ")"
) ")"
; ";"
expression_statement
invocation_expression
member_access_expression
invocation_expression
member_access_expression
identifier "Mocker"
. "."
generic_name
identifier "GetMock"
type_argument_list
< "<"
identifier "IIndexerFactory"
> ">"
argument_list
( "("
) ")"
. "."
identifier "VerifyNoOtherCalls"
argument_list
( "("
) ")"
; ";"
} "}"
method_declaration (+266 nodes collapsed)
method_declaration (+135 nodes collapsed)
method_declaration (+131 nodes collapsed)
method_declaration (+136 nodes collapsed)
method_declaration (+131 nodes collapsed)
method_declaration (+131 nodes collapsed)
method_declaration (+547 nodes collapsed)
method_declaration (+547 nodes collapsed)
} "}"
} "}"